2009-04-21 12 views
4

Ich bin auf der Suche nach einer Interprozess-Kommunikationseinrichtung, die zwischen Sprachen und/oder Umgebungen verwendet werden kann, die auf demselben oder anderen Systemen laufen. Zum Beispiel sollte es erlauben, Signale zwischen Java, C# und/oder C++ - Komponenten zu senden, und es sollte auch eine Art von Warteschlangenmechanismus unterstützen. Die einzige Einrichtung, die offensichtlich umwelt- und sprachunabhängig ist, sind Dateien, aber ich nehme an, dies wäre viel zu langsam - und disziplinierte Warteschlangen könnten schwierig zu implementieren sein. Viele der anderen in der Literatur beschriebenen Einrichtungen gelten nur für eine Sprache oder ein Betriebssystem. Vorschläge würden geschätzt werden!Interprozesskommunikation zwischen Sprachen/Betriebssystemen

Antwort

3

Nun, Sie könnten definitiv mit "Sockets" aussehen.

4

Sie müssen wahrscheinlich etwas wie ActiveMQ betrachten. In EAI-Mustern wird der JMS-Bus stark dazu verwendet, mehrere Module zu integrieren, die in verschiedenen Sprachen geschrieben sind und auf mehreren Systemen laufen. Solcher Enterprise Message Bus wie ActiveMQ passt zu mir. Lass es mich wissen, wenn du etwas anderes suchst.

-Shamik

1

würde ich XML-RPC persönlich nutzen. Es ist einfach auf mehreren Plattformen zu verwenden und erfüllt alle Ihre Anforderungen sauber. Jedes Warteschlangen kann programmatisch gehandhabt werden.

4

Wenn man über heterogene Architektur sprechen, IMHO Transportschicht (wie Sie „Steckdosen“ als Antwort markiert) ist ebenso wichtig, wie Protokollschicht (Datenserialisierung usw.).

Was ich gefunden habe, dass rechtzeitig zurückkehrt, lernt Programmierbibliothek, die Serialisierung von Daten zwischen verschiedenen Programmiersprachen, Betriebssystemen und Architekturen vereint (Big-Endian/Low-Endian, 16/32/64 Bits, etc).

Meine bevorzugte Wahl ist Google Protocol Buffers, mit in-Box-Unterstützung für C++, Python, Java und Third-Party Add-ons mit Unterstützung für huge amount of programming/scripting languages (einschließlich Lua, Matlab, Ruby, Perl, R, Php, OCaml, Merkur, Erlang, Go, D , Lisp) und RPC implementations (wie Zeroc ICE). Aus der Liste viele andere Produkte unterstützen sie wie SWI-Prolog Google Protocol Buffers Library. Die Alternative ist mit Unterstützung für eine Vielzahl von Programmiersprachen.

Zum Vergleich können Sie überprüfen: Thrift vs Protobuf vs JSON.

0

Meine Wette ist auf DBus [peer to peer] - Das hat eine bessere Flusskontrolle. Es läuft auf RPC, daher gibt es viele Sprachbindungen. RPC ist natürlich auf lokalen Sockets gebaut.

+0

Schön, eine andere Antwort nach 5 Jahren zu sehen! Wahrscheinlich existierte DBus nicht, als ich diese Frage zum ersten Mal stellte! Thx –

+0

Was haben Sie am Ende benutzt? – resultsway

+0

Gebrauchte Steckdosen zu dieser Zeit für eine ziemlich spezielle Aufgabe. Ich fürchte, ich habe es seitdem nicht mehr benutzt, da das Bedürfnis nicht wieder aufkam. Wenn es so ist, werde ich DBus im Kopf haben! Prost. –

Verwandte Themen