Abbiamo un sistema java implementato in diversi livelli. Al livello più basso, ci sono servizi che estendono una serie di componenti dell'infrastruttura come database, blob-storage, code di elaborazione, ecc. Oltre a ciò, abbiamo il livello del dominio che implementa i flussi di lavoro che usano uno o più di questi servizi (usando il comando e i modelli di comando composto). Infine c'è un layer basato su jax-rs (jersey), che fornisce un'interfaccia/protocollo REST implementato in termini di flussi di lavoro dal livello dominio.Uso di Scala per implementare un livello dominio che copre una serie di servizi basati su java
La mia esperienza con Scala è limitata, ma ho il sospetto che potrebbe essere un buon strumento per scrivere una versione più espressiva del nostro livello di dominio perché il codice Java è piuttosto prolisso e difficile da eseguire il debug a volte. In parte perché il controllo della composizione e dell'esecuzione dei comandi è gestito da classi base estese da comandi concreti. Con il senno di poi, questa potrebbe non essere stata una scelta di design ideale.
Spero che questa descrizione di altissimo livello serva per illustrare ciò che sto cercando di ottenere. Fammi sapere se ho bisogno di essere più specifico. Sono principalmente interessato a come il livello del dominio possa essere integrato con Scala mantenendo il livello di servizio basato su Java. Inoltre, i suggerimenti su come implementare il protocollo http/REST sulla parte superiore del livello del dominio in modo che possa essere distribuito in un contenitore di applicazioni web java sarebbe anche molto interessante.
Per alcune idee su diverse implementazioni, suggerisco di dare un'occhiata a come alcuni dei modelli di progettazione più comuni possono essere implementati in modo diverso in Scala. Un buon punto di partenza è http://stackoverflow.com/questions/11123984/which-gof-design-patterns-has-entely-different-implementation-java-vs-scala – MilesHampson