语言/操作系统之间的进程间通信

时间:2009-04-21 15:14:17

标签: ipc

我正在寻找可以在相同或不同系统上运行的语言和/或环境之间使用的进程间通信工具。例如,它应该允许在Java,C#和/或C ++组件之间发送信号,它还应该支持某种排队机制。显然环境和语言无关的唯一设施是文件,但我认为这将太慢 - 并且有纪律的排队可能难以实现。文献中描述的许多其他设施仅适用于一种语言或一种操作系统。建议将不胜感激!

6 个答案:

答案 0 :(得分:4)

您可能需要查看ActiveMQ之类的内容。在EAI模式中,JMS总线大量用于集成以多种不同语言编写并在多个系统上运行的多个模块。对我来说,像ActiveMQ这样的企业消息总线符合您的需求。如果您正在寻找其他内容,请告诉我。

-Shamik

答案 1 :(得分:4)

在讨论异构架构时,恕我直言传输层(当您将“套接字”标记为答案时)与协议层(数据序列化等)一样重要。

我发现及时返回的是学习编程库,它统一了不同编程语言,操作系统和体系结构之间的数据序列化(big-endian / low-endian,16/32/64位等)

我最喜欢的选择是Google Protocol Buffers,内置支持C ++,Python,java和Third-Party Add-ons,支持huge amount of programming/scripting languages(包括Lua,Matlab,Ruby,Perl,R, Php,OCaml,Mercury,Erlang,Go,D,Lisp)和RPC implementations(如Zeroc ICE)。除了列表之外,许多其他产品都支持它们,如SWI-Prolog Google Protocol Buffers Library

替代方案是Thrift,同时支持各种编程语言。

为了进行比较,您可以查看:Thrift vs Protobuf vs JSON

答案 2 :(得分:3)

好吧,你肯定可以看看使用“套接字”。

答案 3 :(得分:1)

我会亲自使用XML-RPC。它易于在多个平台上使用,并且干净地满足您的所有要求,任何排队都可以通过程序化方式处理。

答案 4 :(得分:1)

查看Microsoft Message Queue或类似内容。另请查看XML-RPCSOAPJSON等。

答案 5 :(得分:0)

我的赌注是DBus [点对点] - 哪个有更好的流量控制。它运行在RPC之上,因此有许多语言绑定。 RPC ofcourse建立在本地套接字之上。