Avatar billede kamak Praktikant
09. oktober 2003 - 13:23 Der er 8 kommentarer og
2 løsninger

forskel på RMI og Sockets?

Hvad er forskellen på RMI og sockets i java? Hvad er bedst?
Avatar billede bearhugx Nybegynder
09. oktober 2003 - 13:30 #1
Hmmm - no offense - men du kunne ligesågodt have spurgt om hvad der var bedst af pærer og boysenbær...

et Socket er en port/kanal ud til omverdenen - hvergang du sender noget ud til internettet, så åbner du i princippet et Socket på en bestemt port, sender dit data ud, og lukker Socketet igen - Dermed sagt er Sockets en af hjørnestenene i netværkskommunikation i Java...

RMI står for Remote Method Invocation og handler om at have et instantieret objekt på en remote server, hvor du så beder om at udføre en metode på dette objekt, og få sendt svaret tilbage...

To ting, som kun har det umiddelbare til fælles, at de er netværks-emner :-)

Så derfor er der ikke noget svar på "hvad der er bedst"
Avatar billede kamak Praktikant
09. oktober 2003 - 13:46 #2
men kan man ikke kalde en metode på et objekt(der ligger på en server) fra en klient og få svaret sendt tilbage uden brug af RMI?
Avatar billede bearhugx Nybegynder
09. oktober 2003 - 13:54 #3
Man kan via SOAP forudsat at der på serveren hostes en WebService for den specifikke metode....
Det er den vej at det nok kommer til at gå... RMI kan kun bruges i Java <--> Java miljøer --- hvorimod at SOAP er teknologi-neutral ... Hvilket gør det muligt fra web eller f.eks. fra et Java-program at kalde metoder på C++-objekter :-)
Avatar billede arne_v Ekspert
09. oktober 2003 - 13:54 #4
Både RMI og sockets kan bruges til client server i Java.

(faktisk bruger RMI sockets)

Med sockets skal du selv pakke data ned, skrive dem, læse sem og
pakke dem ud igen.

I RMI gøres dete hel for dig i genereret kode (stub + skeleton).

Som hovedregel:

mange kald med mange argumenter med lille data => RMI sparer en masse kode

få kald med få argumenter med store data (f.eks. file upload) => RMI er
upraktisk og man sparer ikke noget kode
Avatar billede arne_v Ekspert
09. oktober 2003 - 13:56 #5
Du kan godt selv implementere RPC over sockets, men det vil være
alt for meget arbejde.

RMI er beregnet til det.

Alterantiver er:
  - EJB
  - CORBA
  - Web Service (SOAP over HTTP)
Avatar billede kamak Praktikant
09. oktober 2003 - 14:12 #6
med spørgsmålet "Hvad er bedst?" håbede jeg på at få et svar ala Arnes hovedregel (som jeg ikke kendte). Jeg har lavet lidt med sockets og ville så bare vide om det kunne betale sig at sætte sig ind i RMI, hvilket jeg indtil videre synes er lidt besværligt, ved første øjekast vel og mærket.

hvad er RPC?
Avatar billede arne_v Ekspert
09. oktober 2003 - 14:18 #7
RPC = Remote Procedure Call
Avatar billede arne_v Ekspert
09. oktober 2003 - 14:19 #8
Jeg vil sige at det hører med til almindelige dannelse blandt Java
programmører at kunne lidt RMI !

:-)
Avatar billede kamak Praktikant
09. oktober 2003 - 14:19 #9
ok tak for svarene. I deler pointene
Avatar billede bearhugx Nybegynder
09. oktober 2003 - 14:27 #10
takker for points
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester