使用情景:一个Java进程和一个或两个C++进程,在同一台机器上,需要双向、二进制、非持久化的通信。其中一个C++进程负责实例化其他进程。
我已经看过一些东西,比如XML/JSON-RPC、Protocol Buffers、Thrift、zeromq等。
如果可能的话,可移植性会很好,但需要支持Windows XP/7。
使用情景:一个Java进程和一个或两个C++进程,在同一台机器上,需要双向、二进制、非持久化的通信。其中一个C++进程负责实例化其他进程。
我已经看过一些东西,比如XML/JSON-RPC、Protocol Buffers、Thrift、zeromq等。
如果可能的话,可移植性会很好,但需要支持Windows XP/7。
如上所述,消息内容的格式由您决定,但是对于内部定义的消息协议,Google Protobuf可能是适当的,因为它支持C++和Java语言绑定。Google Protobuf还提供了一种定义RPC服务接口的机制,但您必须为客户端/服务器实现提供具体的消息传输协议。我从未通过ZMQ传输实现过这一点,但如果必要,应该是可以实现的。
XML/JSON-RPC可以考虑用于发布的协议(例如通过REST服务),与ZMQ相结合时桥接相当容易。
考虑到您的要求,我猜测后面的协议格式选项可能不是必需的,但根据您打算与Java/C++参与者一起使用的框架,可能会很有用。
据我所知,ZMQ符合您关于Windows XP/7平台的可移植性约束。 不确定,但在Windows系统上进行线程间通信可能会有限制。 但这似乎不适用于您描述的场景。
备选传输框架:
备选消息编解码框架: