2008-09-23 5 views

Antwort

9

Ich würde versuchen Sie es so denken:

Werden Sie unabhängige Dienste für untereinander laufen, und diese Dienste können durch Nicht-Java-Anwendungen einige Zeit in der Zukunft erreicht werden? Dann gehen Sie für Web-Dienste.

Möchten Sie nur Teile einer Anwendung (beachten Sie die Einzahl) über mehrere Server verteilen? Dann gehen Sie für RMI und Sie müssen das Java-Universum nicht verlassen, um alles zusammenzubringen, das eng zusammenarbeitet.

+0

Guter Ansatz, darüber nachzudenken. Vergessen Sie auch nicht die zusätzliche Komplexität und den Aufwand, der damit verbunden ist, dass eine RMI-Registrierung zum Nachschlagen von Diensten ausgeführt werden muss. Das ist zumindest ein zusätzlicher Port offen und im schlimmsten Fall Probleme mit dem Hosting dieser Registry. –

6

Ich würde WS wählen.

  • Es ist unwahrscheinlich, dass WS/RMI Ihr Engpass sein wird.
  • Warum die Tür für andere mögliche Technologien in der Zukunft schließen?
  • RMI kann Probleme haben, wenn die Version der Klassen auf dem Client/Server nicht mehr synchron ist.

Und ... Ich würde höchstwahrscheinlich REST-Dienste wählen.

+1

Sie können nicht sagen, ob es unwahrscheinlich ist, bis Sie tatsächlich gemessen haben. –

1

meine Entscheidungen sind:

Standard Java Serialisierung - Profis: imho das Maximum an Leistung bietet, einfach zu implementieren (I Frühling bin mit lokalen Schnittstelle als Fern ein belichten); Nachteile: Serialisierung funktioniert nicht zwischen verschiedenen Versionen Jvm

binäre Serialisierung (für von Anlegesteg Beispiel hessischen) - Profis: gleiche Leistung wie mit Java Serialisierung und arbeitet zwischen verschiedenen Versionen Jvm

WS: nur wenn es einer Notwendigkeit in der Interoperabilität zwischen verschiedenen Plattformen java + .net, sonst ist es einfach zu geringes Gewicht.

1

RMI ist eine großartige schnelle Entwicklung Transport, aber ich würde davon abraten, es in einer Produktionsumgebung zu verwenden. Das Kompatibilitätsproblem mit der Serialisierung kann zu Problemen führen. Sie müssen Ihre Bereitstellungen sehr sorgfältig koordinieren.

WebServices sind ineffizient, ja, aber nur durch Hardware dabei. Verwenden Sie alternativ einfaches XML-over-HTTP anstelle von SOAP/WSDL.

2

Wenn Sie nicht brauchen (Interop mit Nicht-Java), und Sie wahrscheinlich nicht sind, wird RMI besser sein; weniger Code, weniger Konfiguration, weniger Overhead

Eine Option, wenn Sie Angst haben, dass Sie brauchen, ist es, EJB3 zu verwenden; Es verwendet RMI, ist sehr einfach einzurichten und bereitzustellen, ermöglicht es Ihnen aber auch, Ihre Anrufe bei Bedarf einfach in Webdienste umzuwandeln.

Was auch immer Sie tun, tun Sie nicht erstellen Sie Ihre eigene Sache; bleib bei einem Standard.

+0

Die Anwendungen werden möglicherweise nicht in einer Umgebung ausgeführt, die EJBs unterstützt –

Verwandte Themen