Windows操作系统环境中C ++应用程序与Java App之间的进程间通信

时间:2009-07-30 21:12:34

标签: java c++ windows ipc

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

您会选择什么进程间通信方法,为什么?

我们的表上的方法是:共享文件,管道和套接字(虽然我认为这有一些安全问题)。我对其他方法持开放态度。

4 个答案:

答案 0 :(得分:9)

我不确定为什么你认为基于套接字的通信存在安全问题(使用SSL)。这通常是一种非常好的方法,因为它是语言无关,假设您有一个明确定义的通信协议。例如,查看Google的 protocol buffers - 它们会生成所需的Java类和流。

根据我的经验,文件系统(尤其是网络文件系统)不太适合这种通信,因为它们不一定适用于消息传递(我看到缓存问题导致文件未被选中以目标进程为例)。

另一种选择是消息传递层(例如AMQ或Tibco),尽管这可能需要更高的管理开销(以及专业知识)来设置。

就个人而言,我会选择纯插槽方法,因为它具有灵活性和简单性。您将完全控制

答案 1 :(得分:3)

我使用命名管道进行C#和跨平台c ++应用程序之间的通信,但只有好的结果。除非插座是绝对可行的。

答案 2 :(得分:2)

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

安全性肯定是一个问题,但根据它的重要性,有很多选择。您可以使用SSL,自定义握手,密码保护登录和防火墙来帮助保护它。

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

答案 3 :(得分:1)

Ice很酷:)