Ich habe ein ähnliches Paar für eines meiner Projekte verwendet, aber anstelle von RoR habe ich Python verwendet. Ich denke nicht, dass es einen großen Unterschied gibt.
Im Allgemeinen gibt es in dieser Art von Programmierung nichts Spezifisches. Zwei wichtige Dinge, die Sie beachten müssen:
- gute Modularität;
- durchdachtes Protokoll zwischen RoR und Java.
Zuerst geht es um genaue Funktionsaufschlüsselung zwischen Teilen des Systems. Wir haben einige Probleme, weil wir nicht verstehen, welcher Teil eines Jobs von Java erledigt werden muss und welcher Teil von Python. Im Allgemeinen müssen Sie alle Funktionen, die nahe beieinander liegen, miteinander verknüpfen, und Dinge, die weit entfernt sind, müssen an sehr wenigen Stellen verbunden sein. Ich denke, Sie kennen die Regeln der Modularität, aber wenn Sie verschiedene Sprachen zusammensetzen, müssen Sie viel sorgfältiger darüber nachdenken. Sie können auch daran interessiert sein, mehrere unterschiedliche Java-Dienste zu erstellen (z. B. einen für Datenbank-Caching und einen für alle anderen), um sie später frei kombinieren oder sogar in anderen Projekten verwenden zu können.
Zweitens geht es um die Kommunikation zwischen Ihren Teilen. Ich kann zwei Arten der Kommunikation sehen: über die Datenbank und über das reine Netzwerkprotokoll. Die ersten brauchen irgendwie Netzwerkkommunikation, also verwendeten wir das reine Netzwerkprotokoll, ohne irgendeine andere Möglichkeit, Teile zu verbinden.
Wir hatten viel mit SOAP experimentiert, aber es gab Hunderte von Fehlern: Dieses Protokoll ist ganz in Ordnung, um Dienste in einer Sprache (id Java zu Java) zu verbinden, aber schrecklich für die Verbindung von Diensten in verschiedenen Sprachen - automatische Tools zum Erstellen von WSDLs gab unterschiedliche Ergebnisse für Java und Python, und das manuelle Erstellen eines Schemas war hart und arbeitsintensiv.
So haben wir REST verwendet. Es nutzt alle Funktionen des HTTP-Protokolls wie alle vier Haupt-HTTP-Methoden (POST, GET, PUT, DELETE), Fehlercodes und viele andere Dinge, so dass es fast alles deckt, was Sie wollen. Die einzige Einschränkung bei REST besteht darin, dass sie den Status nicht halten kann. Daher müssen Sie möglicherweise Ihren eigenen Sitzungsmechanismus implementieren.
Wenn Sie mit REST nicht sehr vertraut sind und ein reales Beispiel suchen, finden Sie unter Facebook Graph API und für die Implementierung von REST-Diensten in Java können Sie Restlets verwenden.
Was würden Sie erwarten, im Backend zu sein, und wie sollte das Frontend mit dem Backend kommunizieren? –
@Thorbjorn: Soweit Kommunikation, ich lehne mich an JSON. Obwohl ich nicht überzeugt bin, welche Bibliothek zu verwenden oder die damit verbundenen Kompromisse wie Wartung. Gedanken? – Ian
TWitter tut dies. Ihr Frontend ist Rails und ihr Backend benutzt Scala. Ich denke, Sie tun das Richtige: das richtige Werkzeug für den richtigen Job zu verwenden. –