2009-04-21 7 views
4

Je recherche un moyen de communication inter-processus pouvant être utilisé entre des langages et/ou des environnements fonctionnant sur des systèmes identiques ou différents. Par exemple, il devrait permettre l'envoi de signaux entre les composants Java, C# et/ou C++, et il devrait également prendre en charge un certain type de mécanisme de mise en file d'attente. La seule installation qui est évidemment environnement et indépendant de la langue est les fichiers, mais je suppose que cela serait beaucoup trop lent - et la mise en file d'attente disciplinée peut être difficile à mettre en œuvre. Bon nombre des autres installations décrites dans la documentation s'appliquent uniquement à une langue ou à un système d'exploitation. Des suggestions seraient appréciées!Communication inter-processus entre langages/systèmes d'exploitation

Répondre

3

Eh bien, vous pourriez certainement regarder en utilisant "sockets".

4

Vous devez probablement regarder quelque chose comme ActiveMQ. Dans les modèles EAI, le bus JMS est fortement utilisé dans le but d'intégrer plusieurs modules écrits dans plusieurs langages différents et fonctionnant sur plusieurs systèmes. Pour moi, un tel bus de messages d'entreprise comme ActiveMQ répond à vos besoins. Faites-moi savoir si vous cherchez autre chose.

-Shamik

1

j'utiliser XML-RPC personnellement. Il est facile à utiliser sur plusieurs plates-formes et répond parfaitement à toutes vos exigences, n'importe quelle file d'attente peut être traitée par programme.

4

Quand on parle de l'architecture hétérogène, la couche de transport à mon humble avis (comme vous avez marqué « prises » comme réponse) est aussi important, en tant que couche de protocole (sérialisation de données, etc.). Ce que j'ai trouvé qui revient à temps, c'est l'apprentissage de la bibliothèque de programmation qui unifie la sérialisation des données entre différents langages de programmation, systèmes d'exploitation et architectures (big-endian/low-endian, 16/32/64 bits, etc.).

Mon choix préféré est Google Protocol Buffers, avec le soutien en boîte pour C++, Python, Java et Third-Party Add-ons avec prise en charge huge amount of programming/scripting languages (y compris Lua, Matlab, Ruby, Perl, R, Php, OCaml, Mercure, Erlang, Go, D , Lisp) et RPC implementations (comme Zeroc ICE). En dehors de la liste de nombreux autres produits les soutiennent comme SWI-Prolog Google Protocol Buffers Library.

L'alternative est Thrift avec la prise en charge d'une variété de langages de programmation.

Pour comparaison, vous pouvez vérifier: Thrift vs Protobuf vs JSON.

0

Mon pari est sur DBus [peer to peer] - Qui a un meilleur contrôle de flux. Il fonctionne au-dessus de RPC donc il y a beaucoup de liaisons de langage. RPC ofcourse est construit au-dessus des sockets locaux.

+0

Génial de voir une autre réponse après 5 ans! Probablement DBus n'existait pas quand j'ai d'abord posé cette question! Thx –

+0

qu'avez-vous fini par utiliser? – resultsway

+0

Les prises utilisées à ce moment-là pour un travail assez spécifique. Je crains de ne pas l'avoir utilisé depuis, car le besoin ne s'est pas reproduit. Si c'est le cas, je prendrai DBus en tête! À votre santé. –

Questions connexes