/ Forside / Teknologi / Udvikling / C/C++ / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
C/C++
#NavnPoint
BertelBra.. 2425
pmbruun 695
Master_of.. 501
jdjespers.. 500
kyllekylle 500
Bech_bb 500
scootergr.. 300
gibson 300
molokyle 287
10  strarup 270
c++ og distribution af objekt fra linux ti~
Fra : Kim Schulz


Dato : 28-09-04 20:24

hejsa
Sidder med et c++ program som kører på både linux og windows og som skal
kunne udveksle objekter med hinanden.
Altså et objekt fra den ene maskine skal kunne lagres på den anden og
hentes tilbage igen og bruges uden problemer.

Hvordan klarer jeg lige den. Overvejede en form for serialisering, men
hvordan er det lige smartest at gøre det?

--
Kim Schulz | Fundanemt Content Management system:
Geek by nature | http://www.fundanemt.com
schulz.dk | http://www.fundusers.org

 
 
Bertel Brander (28-09-2004)
Kommentar
Fra : Bertel Brander


Dato : 28-09-04 21:45

Kim Schulz wrote:

> hejsa
> Sidder med et c++ program som kører på både linux og windows og som skal
> kunne udveksle objekter med hinanden.
> Altså et objekt fra den ene maskine skal kunne lagres på den anden og
> hentes tilbage igen og bruges uden problemer.
>
> Hvordan klarer jeg lige den. Overvejede en form for serialisering, men
> hvordan er det lige smartest at gøre det?
>

Det kommer an på en del:
Hvordan skal objekterne fysisk udveksles ?
Hvor komplexe er objekterne ?
Er hastighed vigtigere end fleksibilitet ?

Jeg kunne forstille mig alt fra at lave en
rå binær kopiering af objekterne, til en
konvertering til tekst og tilbage.

--
What's in a name?
That which we call a rose by any other name would smell as sweet.
- Juliet
http://home20.inet.tele.dk/midgaard/

Mogens Hansen (29-09-2004)
Kommentar
Fra : Mogens Hansen


Dato : 29-09-04 05:35

> "Kim Schulz" <kim@schulz.dk> wrote in message
news:20040928212404.11ef3273@lifesuckz.nork.auc.dk...
> hejsa
> Sidder med et c++ program som kører på både linux og windows og som skal
> kunne udveksle objekter med hinanden.
> Altså et objekt fra den ene maskine skal kunne lagres på den anden og
> hentes tilbage igen og bruges uden problemer.
>
> Hvordan klarer jeg lige den. Overvejede en form for serialisering, men
> hvordan er det lige smartest at gøre det?

Du skal være opmærksom på at hvis programmet skal virke generelt er der en
masse detaljer som processorens endian, hvor stor er en int etc. som skal
håndteres.
Hvis du bruger ACE (http://www.cs.wustl.edu/~schmidt/ACE.html) findes der
klasser der netop klarer det (ACE_InputCDR, ACE_OutputCRD - CDR står for
Common Data Representation).
Du vil med ACE desuden få den fordel at den indkapsler en masse
platformsarhængighed (og nyttige design patterns), så din kode både kan køre
på MS-Windows og Linux (og en masse andet).

Vær opmærksom på at med serialisering er det _kopier_ af objekter, der
bliver sendt rundt - alle maskiner har således ikke adgang til _samme_
objekt.

Hvis du har brug for at lave en applikation med distruerede objekter, så
alle tilgår samme objekt som ligger på en server, kan det være en ide at
kigge på CORBA (f.eks. http://www.cs.wustl.edu/~schmidt/TAO.html eller
http://omniorb.sourceforge.net/ - omniORB er nemmest at gå til) eller ICE
(http://www.zeroc.com/).

Venlig hilsen

Mogens Hansen



Kim Schulz (29-09-2004)
Kommentar
Fra : Kim Schulz


Dato : 29-09-04 06:31



Må hellere lige forklare lidt mere om hvad det er som det skal bruges
til. Det er et DSM system (Distributed Shared memory) som arbejder på
objekt niveau. Altså en række maskiner i net har en stor virtuel
hukommelse som de kan lægge egne og shared objekter op i.
Shared objekter skal andre kunne tilgå og det skal (når det er færdigt)
være transperent for brugeren, hvor objektet ligger på netværket.


[snip]
> Du skal være opmærksom på at hvis programmet skal virke generelt
er
> der en masse detaljer som processorens endian, hvor stor er en int
> etc. som skal håndteres.


Ja pt. er planen x86 platformen så her skulle vi være sikre.



> Hvis du bruger ACE (http://www.cs.wustl.edu/~schmidt/ACE.html) findes
> der klasser der netop klarer det (ACE_InputCDR, ACE_OutputCRD - CDR
> står for Common Data Representation).
> Du vil med ACE desuden få den fordel at den indkapsler en masse
> platformsarhængighed (og nyttige design patterns), så din kode både
> kan køre på MS-Windows og Linux (og en masse andet).

Jeg har kigget lidt på ace, men synes det virker ret rodet. Men måske
jeg skulle kigge lidt mere på det.

> Vær opmærksom på at med serialisering er det _kopier_ af objekter, der
> bliver sendt rundt - alle maskiner har således ikke adgang til _samme_
> objekt.

Kopier er ok, objekterne skal alligevel replikeres rundt på indtil flere
maskiner. Det vigtige er at man kan tilgå dem som objekter fra flere
maskiner.


> Hvis du har brug for at lave en applikation med distruerede objekter,
> så alle tilgår samme objekt som ligger på en server, kan det være en
> ide at kigge på CORBA (f.eks.
> http://www.cs.wustl.edu/~schmidt/TAO.html eller
> http://omniorb.sourceforge.net/ - omniORB er nemmest at gå til) eller
> ICE(http://www.zeroc.com/).

Har kigget på corba en del, men umiddelbart er det jo på metode niveau
og ikke på objekt niveau - altså man kalder metoder i objekterne.


--
Kim Schulz | Need a Content Management System for your website? Go
Geek by nature | get Fundanemt at : http://www.fundanemt.com New
schulz.dk | version out now!

Kim Schulz (29-09-2004)
Kommentar
Fra : Kim Schulz


Dato : 29-09-04 16:46

[snip]
> Hvad er din rolle i denne sammenhæng ?
> Skal du lave et DSM system eller skal du bruge det ?

lave det!


[snip]
> Jeg forstår ikke hvad du mener
> Hvad lægger du i skelnen mellem metode niveau og objekt niveau ?

metode niveau:
kald en metode på maskine2 fra maskine1 og få resultat tilbage

Objekt niveau:
hent objekt på maskine2 fra maskine1



--
Kim Schulz | Linux - Your Choice! Your Opinion! Your life!
Geek by nature |
schulz.dk |

Kim Schulz (29-09-2004)
Kommentar
Fra : Kim Schulz


Dato : 29-09-04 19:07

[snip]
> Jeg ved ikke ret meget om DSM, men
> * hører det ikke (ideelt set) hjemme på system-niveau på samme måde
> som
> virtuel hukommelse ?

nemlig, derfor vi laver det som ren software implementering i userspace


> * er f.eks. cache cohenrency problemer ikke langt sværere end
> hvordan
> objekter serialiseres ?

det findes der algoritmer til og massere af fine bøger som jeg har været
igennem. Det er et stort implementations arbejde, men det er muligt.
Serialisering af objekter på tværs af hardware platforme, operativ
system, compiler osv. er straks en hel anden udfordring.



--
Kim Schulz | Fundanemt Content Management system:
Geek by nature | http://www.fundanemt.com
schulz.dk | http://www.fundusers.org

Søg
Reklame
Statistik
Spørgsmål : 177580
Tips : 31968
Nyheder : 719565
Indlæg : 6409076
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste