2010-04-12 12 views
7

Ich muss unsere Anwendung in eine leichte GUI-Anwendung und eine Business-Logik-Anwendung trennen. Dies ist kein Client/Server-Setup als solches, da die "Server" -Komponente nur einen Client hat.Java: Sockets oder RMI?

Die andere Einschränkung in der Anwendung ist, dass es nur einen Ein-/Ausstiegspunkt hat. Wenn wir also RMI benutzen würden, würde es immer nur eine Funktion geben. Alle Formulardaten sind bereits in einen String verpackt und durchlaufen einen Transportbereich.

Sollte ich nur Java Sockets verwenden, um diese Anwendung zu verbessern, oder mit RMI gehen? Oder eine andere Java-Technologie?

Ich habe einen früheren Post geschrieben, der die Anforderungen unserer Anwendung skizziert, aber es ist unbeantwortet geblieben. https://stackoverflow.com/questions/2604528/terminal-panel-pc-single-server-solution-client-server-or-rdp

Prost.

+0

möglich duplicate von http://stackoverflow.com/questions/2604528/terminal-panel-pc-single-server-solution-client-server-or-rdp – paxdiablo

+0

Ich denke, Sie haben die Frage selbst beantwortet. Wenn es leichtgewichtig und Einzelbenutzer ist und Sie mit RMI vertraut sind, dann sollten Sie einfach mitgehen. –

+1

@paxdiablo * möglich * duplizieren? :) – oedo

Antwort

6

persönlich scheint RMI wie ein bisschen Overkill, wenn Sie nur eine Methode zum Aufruf haben, und alle Ihre Daten sind bereits in einer Zeichenfolge verpackt. Ich stelle mir vor, ein einfacher Socket-Server würde sehr gut für Ihre Bedürfnisse ausreichen. Aber RMI gibt Ihnen eine Menge Sachen kostenlos, wie Multithreading, verteilte Garbage-Collection, Objekt-Marshalling, etc. Aber wenn Sie nur 1 Client haben, dann ist Multithreading möglicherweise nicht nützlich, und Sie machen dann Ihr eigenes Objekt-Marshalling Diese Vorteile könnten dir nichts bringen.

gibt es eine gute Seite auf rmi Fähigkeiten hier: http://java.sun.com/javase/technologies/core/basic/rmi/whitepaper/index.jsp

+0

Das war, was ich dachte. Halten Sie es einfach, oder nutzen Sie RMI und profitieren Sie später von den anderen Funktionen. Ich bin mir immer noch nicht sicher, aber ich wollte nur sicherstellen, dass es keine anderen Frameworks/APIs gab, von denen ich nichts wusste. Prost. – StillLearning

2

Da Ihr Protokoll ist schon sehr einfach (Sie übergeben nur eine Zeichenfolge) Ich schlage vor, dass Sie nur mit Sockets gehen. der Vorteil wäre, dass Sie nicht an beiden Enden mit Java verbunden sind, zum Beispiel - es wird leicht möglich sein, die Benutzeroberfläche in eine andere Sprache zu wechseln.

1

Sie können prüfen, Ihren Server Einstiegspunkt als Servlet und dabei eine POST von einem Client-Verpackung.

+0

ja, kümmert sich um Marshalling und Unmarshalling. Einziger Nachteil ist, wir brauchen einen Webserver. –

2

Nach dem Ausführen von Apps, die rohe Sockets zu kommunizieren, die RMI verwendet, und das verwendete SOAP, ist es am einfachsten (mit einem dünnen Haar) RMI zu verwenden, aber dann sind Sie fest verpflichtet, Java für alles zu verwenden. Der Schlüssel, warum RMI am einfachsten ist, ist, dass es gewährleistet, dass ganze Nachrichten gesendet werden und enthält ein grundlegendes Discovery Framework, und doch hat es nicht die Komplexität von SOAP (was sehr viel komplizierter ist als alles andere, was oben aufgeführt ist).