Voici la tâche: Imaginez, nous avons une application et un plug-in pour cela (bibliothèque dynamique). L'interface entre l'application et le plug-in est complètement définie. Maintenant, j'ai besoin d'exécuter l'application et le plug-in sur différents ordinateurs. J'ai écrit un bouchon pour le plug-in sur un ordinateur où les applications réelles sont en cours d'exécution. Et l'application le charge et appelle ses fonctions comme s'il s'agissait d'un plug-in natif. Sur l'autre ordinateur, il y a un bouchon à la place de l'application réelle, qui charge le plug-in natif. Maintenant, j'ai besoin d'organiser RPC entre mes bouchons sur le réseau, quel que soit le transport même. Habituellement, ce n'est pas difficile. Mais il sont quelques restrictions:Bibliothèque RPC multi-plateforme C++
- fiche d'application-en interaction peut être reenterable (par exemple, l'application appelle f1() des appels plug-in, dans le plug-in f1() g1() de l'application, dans g1() application appelle f2() de plug-in et ainsi de suite ...)
- Toute reenteration doit être exécuté exactement par le même fil, qui a commencé la séquence
où puis-je trouver un cross bibliothèque C++ RPC de plate-forme avec de telles fonctionnalités?
Je vous aurais suggéré des tampons de protocole Google, ou Thrift - tous deux qui ont l'avantage d'offrir plusieurs liaisons de langues. Je dois admettre cependant que je n'ai pas considéré dans mon propre usage comment l'une ou l'autre bibliothèque répond aux rappels de rentrée. Je m'attendrais à ce qu'ils traitent les appels en attendant la fin d'un appel - la livraison au thread correct est attendue car vous avez vraiment besoin d'un objet comm par thread parallèle de toute façon, donc vous réutiliserez toujours la connexion qui a déjà un couplage de fil particulier. –