Ho usato una coppia simile per uno dei miei progetti, ma invece di RoR ho usato Python. Non penso che ci sia una grande differenza.
In generale, non c'è nulla di specifico in questo tipo di programmazione. Due cose più importanti di cui ti devi preoccupare:
- buona modularità;
- protocollo ben congegnato tra RoR e Java.
Il primo riguarda la scomposizione della funzionalità esatta tra parti del sistema. Abbiamo alcuni problemi a causa della mancata comprensione di quale parte di un lavoro deve essere eseguita da Java e quale parte di Python. In generale, devi unire tutte le funzioni che sono vicine l'una all'altra e le cose che sono lontane devono essere collegate in pochissimi posti. Immagino che tu conosca regole di buona modularità, ma in caso di composizione di lingue diverse questo deve essere pensato molto più attentamente. Puoi anche essere interessato a creare diversi servizi Java distinti (ad esempio uno per il caching del database e un altro per tutto il resto) per poterli combinare liberamente o persino utilizzarli in altri progetti in seguito.
Il secondo riguarda la comunicazione tra le parti. Riesco a vedere due modi di comunicare: attraverso il database e il puro protocollo di rete. I primi necessitano comunque di alcune comunicazioni di rete, quindi abbiamo utilizzato il protocollo di rete puro, senza alcun altro modo per collegare le parti.
Abbiamo sperimentato molto con SOAP, ma ha dato centinaia di errori: questo protocollo è abbastanza adatto per connettere servizi scritti in una lingua (id Java a Java), ma terribile per la connessione di servizi in lingue diverse - strumenti automatici per generare WSDL ha dato risultati diversi per Java e Python e la creazione manuale dello schema era difficile e laboriosa.
Quindi eravamo abituati a REST. Usa tutte le funzionalità del protocollo HTTP come tutti e quattro i principali metodi HTTP (POST, GET, PUT, DELETE), i codici di errore e molte altre cose, quindi copre quasi tutto ciò che si può desiderare. L'unica restrizione con REST è che non può contenere lo stato, quindi potrebbe essere necessario implementare il proprio meccanismo di sessioni.
Se non si è molto a proprio agio con REST e si cerca un esempio reale, vedere Facebook Graph API e per implementare i servizi REST in Java è possibile utilizzare Restlets.
Cosa ti aspetti di essere nel back-end e come dovrebbe comunicare il frontend con il backend? –
@Thorbjorn: Per quanto riguarda la comunicazione, mi sto appoggiando a JSON. Anche se non sono convinto della libreria da utilizzare o dei compromessi di accompagnamento come la manutenzione. Pensieri? – Ian
TWitter sta facendo questo. Il loro frontend è Rails e il loro backend sta usando Scala. Penso che tu stia facendo la cosa giusta: usare lo strumento giusto per il lavoro giusto. –