我正在寻找一种可以在相同或不同系统上运行的语言和/或环境之间使用的进程间通信工具。例如,它应该允许在 Java、C# 和/或 C++ 组件之间发送信号,并且它还应该支持某种排队机制。唯一明显与环境和语言无关的工具是文件,但我认为这太慢了——而且有纪律的排队可能难以实现。文献中描述的许多其他工具仅适用于一种语言或一种操作系统。建议将不胜感激!
6 回答
您可能需要查看ActiveMQ 之类的东西。在 EAI 模式中,JMS 总线被大量用于集成用几种不同语言编写并在多个系统上运行的多个模块。对我来说,像 ActiveMQ 这样的企业消息总线适合您的需要。如果您正在寻找其他东西,请告诉我。
-沙米克
在谈论异构架构时,恕我直言,传输层(正如您将“套接字”标记为答案)与协议层(数据序列化等)一样重要。
我发现及时返回的是学习编程库,它统一了不同编程语言、操作系统和架构(大端/低端、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。
好吧,您绝对可以考虑使用“套接字”。
查看Microsoft Message Queue或类似的东西。也看看XML-RPC,SOAP,JSON等。
我个人会使用XML-RPC。它易于在多个平台上使用,并且完全满足您的所有要求,任何排队都可以通过编程方式处理。
我的赌注是 DBus [点对点]——它有更好的流量控制。它运行在 RPC 之上,因此有许多语言绑定。RPC 当然是建立在本地套接字之上的。