C ++应用程序和Java应用程序在Windows操作系统环境下的进程间通信

我们在Windows上有一个启动java进程的C ++应用程序。 这两个应用程序需要相互通信(通过XML的片段)。

你会select什么样的进程间通信方式,为什么?

对我们来说,表格中的方法是:共享文件,pipe道和套接字(尽pipe我认为这有一些安全性问题)。 我接受其他方法。

Solutions Collecting From Web of "C ++应用程序和Java应用程序在Windows操作系统环境下的进程间通信"

我不确定为什么你认为基于套接字的通信会有安全问题(使用SSL)。 假设你有一个定义明确的通信协议,它通常是一个非常好的方法,因为它是语言不可知的 。 看看Google的协议缓冲区 ,例如,他们生成所需的Java类和流。

根据我的经验,文件系统(特别是网络文件系统)并不适合于这种通信,因为它们不一定是用于消息传递的 (我已经看到缓存问题导致文件不被目标进程拾取)。

另一个选择是消息层(例如AMQ或Tibco),尽管这可能涉及更大的管理开销(加上专业知识)来建立。

就个人而言,我会选择一个纯套接字的方法,因为它的灵活性和简单性。 你将完全控制

我已经使用命名管道在C#和跨平台的c + +应用程序之间进行通信,只有很好的结果。 除了那个插座绝对是要走的路。

套接字很好。 它们使您能够轻松地在每个组件周围创建黑盒测试层,并在每台组件上运行每个组件。

安全无疑是一个值得关注的问题,但取决于安全的重要性,还有很多选择。 您可以使用SSL,自定义握手,密码保护登录和防火墙来保护它。

编辑:不是我推荐的东西,但也有使用JNI共享内存。 只是觉得我会提到它,因为它不在你的名单上。

冰很酷:)