12. februar 2003 - 21:24
Der er
16 kommentarer og 1 løsning
Server og database - RMI/Socket
Hvilken løsning er den bedste, har en database på server som klienter skal tilgå via en RMI eller socket løsning ? Men jeg har ikke rigtig fod på hverken RMI eller socket, men tror dog det forholder sig som nedenstående. 1. RMI 'måske' er langsommere en sockets. 2. Via sockets, kan sendes/hentes objekter. 3. Med sockets er der nok også lidt mere kodearbejde i begge ender Jeg har søgt her på Eksperten uden lige at finde svaret. Er der nogen her på Eksperten, som kan be-/ afkræfte ovenstående, alternativt komme med et løsningsforslag ? Carsten
Annonceindlæg fra Computerworld
12. februar 2003 - 21:36
#1
RMI er naturligvis lidt langsommere end sockets, da de bygger ovenpå sockets. Du kan godt sende objekter over sockets. Men med sockets skal du selv kode det at få alle objekter sendt/læst mens det med RMI er ligeså let som et almindeligt metode kald.
12. februar 2003 - 21:37
#2
Et potentielt alternativ hvis sikkerhed tillader det er direkte JDBC.
12. februar 2003 - 21:38
#3
Både RMI og sockets et 3 tier: client---RMI eller socket---server---JDBC---database Direkte JDBC er 2 tier: client---JDBC---database
12. februar 2003 - 21:39
#4
Fordelen ved RMI over sockets er størst hvis der er mange forskellige kald med mange argumenter.
12. februar 2003 - 21:44
#5
Okay.. Nogle klienter connecter via LAN andre via router, for det dig til at foretrække den ene frem for den anden ? Jeg synes nemlig det ser lidt bøvlet ud at få sat serveren op til RMI, for at sige det lige ud: Jeg aner ikke hvad og hvordan, samt hvad der skal installeres på server.
12. februar 2003 - 21:48
#6
Hvis du med router mener ude fra internet gennem en router som evt. også fungerer som firewall, så vil jeg sige at: - direkte JDBC nok ikke er godt - RMI er stadig muligt men sockets er langt det nemmeste at få lukket op for
12. februar 2003 - 21:49
#7
Det er ikke så svært at med RMI. Jeg kan godt poste et lille eksempel, hvis du er interesseret.
12. februar 2003 - 21:50
#8
Det er virksomhedens eget routernet
12. februar 2003 - 21:51
#9
>Det er ikke så svært at med RMI. >Jeg kan godt poste et lille eksempel, hvis du er interesseret. JEG ER MEGET INTERESSERET !!
12. februar 2003 - 21:55
#10
Hvis det er virksomhedens interne routere som kun laver routing, så skulle de gerne være transparente i forhold til både RMI, sockets og JDBC.
12. februar 2003 - 21:57
#11
Eksempel (ready to run on Win32): Test.java --------- import java.rmi.Remote; import java.rmi.RemoteException; public interface Test extends Remote { public String test(String s) throws RemoteException; } TestImpl.java ------------- import java.net.MalformedURLException; import java.rmi.Naming; import java.rmi.RemoteException; import java.rmi.server.UnicastRemoteObject; public class TestImpl extends UnicastRemoteObject implements Test { public TestImpl() throws RemoteException { } public String test(String s) { return (s + s); } public static void main(String[] args) { try { Naming.rebind("test", new TestImpl()); } catch (RemoteException e) { e.printStackTrace(); } catch (MalformedURLException e) { e.printStackTrace(); } } } TestTest.java ------------- import java.net.MalformedURLException; import java.rmi.Naming; import java.rmi.NotBoundException; import java.rmi.RemoteException; public class TestTest { public static void main(String[] args) { try { Test t = (Test) Naming.lookup("test"); System.out.println(t.test("a")); System.out.println(t.test("bb")); System.out.println(t.test("ccc")); } catch (MalformedURLException e) { e.printStackTrace(); } catch (RemoteException e) { e.printStackTrace(); } catch (NotBoundException e) { e.printStackTrace(); } } } Test.bat -------- javac *.java rmic TestImpl start rmiregistry start java TestImpl pause java TestTest
12. februar 2003 - 21:59
#12
Test.java = RMI interface TestImpl.java = RMI implementation + server main program TestTest.java = client Test.bat: oversæt java run RMI Compiler til at generere stub og skeleton kode start RMI Registry (som client og server bruger til at finde hinanden) start server kør client
12. februar 2003 - 22:02
#13
Du var lige ved at få mig over sockets........ Er der nok med JRE på server, for køre RMI ?? (hvis du orker mere)
12. februar 2003 - 22:05
#14
javac og rmic kræver JDK. Men java og rmiregistry skule være i JRE. Så du bør kunne udvikle på en PC med JDK og deploye på en server med JRE.
12. februar 2003 - 22:10
#15
Du er bare kanon til det her !! Du brugte et ord jeg ikke lige er med på: 'deploye'
12. februar 2003 - 22:13
#16
Jeg har fundet ud af betydning af 'deploye' Tusind - Tusind - Tusind - Tusind tak for hjælpen. Jeg arbejder videre herfra Der er point på vej!! Carsten
12. februar 2003 - 22:16
#17
deploye er sådan et udtryk der er på mode i visse kredse. Bare oversæt det med køre. Altså: Så du bør kunne udvikle på en PC med JDK og køre på en server med JRE.
Kurser inden for grundlæggende programmering