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

4
我正在寻找一种跨语言和/或环境的进程间通信工具,可以在同一或不同的系统上使用。例如,它应该允许在Java、C#和/或C++组件之间发送信号,并且还应该支持某种队列机制。唯一明显环境和语言无关的工具是文件,但我认为这会太慢,而且纪律性的排队可能难以实现。文献中描述的许多其他设施仅适用于一种语言或一个操作系统。欢迎提出建议!
6个回答

4
当谈到异构架构时,我认为传输层(如您标记的“套接字”作为答案)和协议层(数据序列化等)同样重要。
我发现,学习编程库以在不同的编程语言、操作系统和体系结构之间统一数据序列化是一个及时的回报(大端/小端、16/32/64位等)。
我的首选是Google Protocol Buffers,它内置支持C++、Python、Java,第三方插件支持大量编程/脚本语言(包括Lua、Matlab、Ruby、Perl、R、Php、OCaml、Mercury、Erlang、Go、D、Lisp)和RPC实现(例如Zeroc ICE)。许多其他产品也支持它们,例如SWI-Prolog Google Protocol Buffers Library
另一个选择是Thrift,也支持多种编程语言。

为了比较,您可能想查看:Thrift vs Protobuf vs JSON


4
你可能需要查看类似于ActiveMQ的东西。在EAI模式中,JMS总线被广泛用于集成写在多种不同语言上、运行在多个系统上的几个模块的目的。对我来说,像ActiveMQ这样的企业消息总线符合你的需求。如果你正在寻找其他东西,请让我知道。
-Shamik

3

嗯,你可以考虑使用“套接字”。


1

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


1

0

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


很高兴在5年后看到另一个答案!当我第一次提出这个问题时,可能DBus还不存在!谢谢。 - Paul Morrison
你最终使用了什么? - resultsway
当时使用了套接字完成一个相当特定的工作。很抱歉自那以后我没有再次使用它,因为并没有再次出现需要。如果需要的话,我会记住DBus!干杯。 - Paul Morrison

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接