Avatar billede tommer Nybegynder
17. oktober 2002 - 09:18 Der er 11 kommentarer og
1 løsning

RMI

jeg har hørt at man ikke bør anvende RMI hvis der er stor afstand mellem klient og server.
er der hold i den påstand ?
Hvorffor ? performance ?
hvis nogen kan henvise til dokumentation der bekræfter dette ville det være rart, da jeg skal bruge der i en opgave jeg er igang med...

på forhånd tak til alle ;-)
Avatar billede arne_v Ekspert
17. oktober 2002 - 09:39 #1
Det mener jeg umiddelbart ikke at der er meget hold i.

Der er en del data der skal flyttes over nettet med RMI, men
hvis enten du laver få kald eller din båndbredde er stor nok,
så bør det virke helt fint.

Jeg mener ikke at RMI laver timeout p.g.a. høj latency.

RMI kan også tunneles gennem HTTP, hvilket jo helt
klart indikerer support for længere afstande.

Så du skal ikke droppe RMI udelukkende p.g.a. lange
net-forbindelser.

Men du skal nok lave en lille prototyping for at
teste performance og håndtering af diverse
firewall problemer.
Avatar billede tommer Nybegynder
17. oktober 2002 - 09:44 #2
ok arne, men en socket med messagepassing vil da være hurtigere eller hvad? den afstand vi snakker om er indenfor danmark.
Avatar billede arne_v Ekspert
17. oktober 2002 - 10:10 #3
Selvfølgelig vil det være hurtigere.

Til gengæld vil du skulle skrive mere kode, fordi RMI
leverer en masse funktionalitet.

Klassisk trade-off.

Men hvorvidt det er nødvendigt med en "custom" løsning
afhænger af dine specifikke behov.
Avatar billede tommer Nybegynder
17. oktober 2002 - 10:26 #4
hvad mener du med "custom" løsning ??
det jeg vil lave er bare at hente og sende filer til serveren, det skal dog foregå via SSL. (men det må ikke være en web-app, altså https)...
Avatar billede arne_v Ekspert
17. oktober 2002 - 10:32 #5
Hvis du bruger RMi så skal du ikke selv skrive kode
til at konvertere argumenter i funktions kald til
en protokol på nettet. Du laver et funktions-kald
på klienten, det genererede klient kode pakker det
ned sender det til serveren, det genererede server
kode pakker det ud og kalder din server kode med
de samme argumenter.

Hvis du bruger sockets skal du selv kode det.
Det kan være rimeligt simpelt eller rimeligt
komplekst afhængig af dit API.

Hvis du kun vil hente sende filer, så er jeg ikke
overbevist om, at RMI er den rette løsning. I det
tilfælde ville jeg nok gå socket vejen.
Avatar billede arne_v Ekspert
17. oktober 2002 - 10:34 #6
Med RMI så er din server også automatisk multi-threaded
og capable af at håndtere flere samtidige klienter.

Det er ikke så svært at implementere disse goodies
i Java, men hvorfor gøre det hvis RMI kan gøre
det og RMI iøvrigt opfylder dine behov.

Og som sagt er jeg blevet tvivlende overfor om
RMI er det rette for dig, når du skal bruge det til at
flytte filer med.
Avatar billede tommer Nybegynder
17. oktober 2002 - 10:41 #7
tråd serveren har jeg lavet, den er rimelig simpel.
jeg mangler bare noget dokumentation for at begrunde mit valg af applikation (socket kontra RMI)...
Avatar billede arne_v Ekspert
17. oktober 2002 - 10:59 #8
Mit argument mod RMI for fil-flytning er at filer kan blive ret store.

Hvis du skal udnytte fordelene ved den genererede kode i RMI, så
skal du have et funktions-kald med argumenter.

Og jeg synes ikke at det er smart at læse en enorm fil ind
i en String for at bruge den i et RMI kald.

Med sockets kan du læse/skrive små bidder af gangen
og håndtere filer i GB størrelse.
Avatar billede tommer Nybegynder
17. oktober 2002 - 11:13 #9
alt iorden arne du har været en stor hjælp.. jeg lader dog lige spørgsmålet stå åben så dem der var til fest i går lige får en chance for at kommentere, du får point senere det lover jeg. tak tak
thomas
Avatar billede tommer Nybegynder
21. oktober 2002 - 00:31 #10
hvordan kan man læse/skrive små bidder af gangen ??
Avatar billede arne_v Ekspert
21. oktober 2002 - 07:17 #11
Jeg er ikke helt sikker på, at jeg forstår spørgsmålet.

Client:

open file
open socket
while not eof do begin
  read data chunk from file
  write data chunk to socket
end

Server:

omvendt
Avatar billede tommer Nybegynder
21. oktober 2002 - 08:33 #12
jeg prøver, tak igen
mvh thomas
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