Nel progetto C ++ su cui sto lavorando, abbiamo un'applicazione composta da diversi processi distribuiti su macchine diverse. Questa rete di i processi sono dinamici poiché i processi (client o servizi in background) può essere avviato e terminato durante la vita dell'applicazione.
Abbiamo già un modulo che consente di trasportare dati arbitrari la rete tramite RPC e la stiamo usando per scambiare informazioni (come informazioni sullo stato, informazioni sullo stato di avanzamento, codici di errore, ecc.) tra i processi. Vorremmo avere uno strato più astratto per gestire la comunicazione asincrona (al momento, l'RPC viene eseguito in modo sincrono) e per consentire l'avvio e la chiusura dei processi dinamicamente e ancora si trovano l'un l'altro.
Recentemente abbiamo cercato una soluzione e pensiamo di poter usare qualcosa come attori e attori remoti (vedi ad esempio questo tutorial ). Un'altra lingua che usa il modello dell'attore è stata più lunga di Scala è Erlang (vedi anche questa domanda ).
Gli attori sono oggetti che hanno un comportamento e una casella di posta, non condividono dati. Gli attori vengono eseguiti contemporaneamente e comunicano attraverso asincroni scambio di messaggi. Come parte del loro comportamento, gli attori possono creare altri attori. I messaggi sono anche rappresentati come oggetti.
Il caso più semplice è che gli attori vivano nello stesso processo. In questo caso possono rivolgersi l'un l'altro usando una maniglia (riferimento, puntatore, identificatore univoco). L'implementazione dell'attore nasconde i thread sottostanti e ogni altro dettaglio. Quando gli attori vivono in diversi processi (e possibilmente in modo diverso) macchine in una rete) sono identificati da un indirizzo IP, una porta e un nome. In questo caso parliamo di attori remoti (vedi il breve esempio in cima a questa pagina ) .
Nel nostro caso, avremmo un attore per ogni processo, avendo cura di tutta la comunicazione, cioè abbiamo bisogno di qualche tipo di attori remoti.
On wikipedia Ho trovato alcuni collegamenti alle librerie di attori per C ++ e Ho iniziato a cercare Theron . Theron sembra molto ben scritto e la libreria documentata ma, a mio avviso, non supporta attori remoti: tutti gli attori devono vivere nello stesso processo. È possibile per creare diversi pool di attori ( framework ), ma tutti questi pool devono vivere nello stesso processo.
Quindi volevo chiedere se qualcuno conosce altre librerie C ++ che supportano il concetto di attore remoto come abbozzato sopra.
Modifica
Questa domanda è stata modificata rispetto alla domanda originale, che segue indicazioni da discussione dei programmatori-meta .
Aggiorna
Altri framework che ho visto sono libcppa (dovrebbe supportare attori remoti, ma è ancora in fase di sviluppo, attualmente versione 0.1), actor-cpp (anch'esso in fase di sviluppo) e libactor , che è in C (il sito web dice che "è utilizzabile, anche se potrebbe non essere pronto per la produzione").