Molti di questi sistemi usano sistemi RPC come Finagle , Apache Thrift o gRPC .
Con tutti questi (e molti altri strumenti simili) definisci l'interfaccia in un linguaggio speciale che è indipendente dal linguaggio di programmazione da utilizzare per qualsiasi particolare implementazione. Quindi esegui il generatore di codice del pacchetto RPC, che può generare codice per un server e / o client che utilizza tale interfaccia.
Il server che genera in genere restituisce semplicemente qualcosa di innocuo (ad esempio, un codice di errore "non implementato") e spetta a te riempirlo con (o collegarlo a) codice che in realtà fa qualcosa di utile.
Poiché l'interfaccia è definita indipendentemente da ogni singolo linguaggio di programmazione, è possibile generare facilmente codice per un server in una lingua (ad es., Java) e client in un'altra (ad es., Python). Il sistema RPC definisce il protocollo per ciò che viene passato sul filo, quindi fintanto che il codice su entrambe le estremità è conforme allo standard, la differenza di lingua è irrilevante.
Un'altra possibilità ampiamente utilizzata è quella di utilizzare una libreria che definisce un protocollo neutrale per le comunicazioni via cavo, ma richiede di effettuare chiamate esplicite per passare i messaggi avanti e indietro utilizzando tale protocollo. Un paio di ovvi esempi di questo genere includono Google Protocollo buffer e Cap'n Proto . Ancora una volta, ci sono molte alternative tra cui scegliere qui. Ho appena collegato una coppia con la quale mi sono più familiare.
In ogni caso, in genere si finisce con una combinazione di un generatore di codice che produce parte del codice necessario e una libreria di codice pre-scritto per gestire altre parti del problema.