我们在Windows上有一个启动java进程的C++应用程序。这两个应用程序需要相互通信(通过xml片段)。Windows操作系统环境下C++应用程序与Java应用程序之间的进程间通信
你会选择什么进程间通信方法,为什么?
对我们来说,桌子上的方法是:共享文件,管道和套接字(虽然我认为这有一些安全问题)。我接受其他方法。
我们在Windows上有一个启动java进程的C++应用程序。这两个应用程序需要相互通信(通过xml片段)。Windows操作系统环境下C++应用程序与Java应用程序之间的进程间通信
你会选择什么进程间通信方法,为什么?
对我们来说,桌子上的方法是:共享文件,管道和套接字(虽然我认为这有一些安全问题)。我接受其他方法。
我不确定为什么你认为基于套接字的通信会有安全问题(使用SSL)。它通常是一个非常好的方法,因为它是语言不可知的,假设您有一个定义明确的通信协议。例如,看看Google的protocol buffers - 它们会生成所需的Java类和流。根据我的经验,文件系统(特别是网络文件系统)并不适合于这样的通信,因为它们不一定要调整为消息传递(我看到缓存问题导致文件不被目标拾取过程例如)。
另一种选择是消息图层(例如,AMQ或Tibco),但这可能会涉及更大的管理开销(加上专业知识)设置。
就我个人而言,我会选择纯插座方法,因为它的灵活性和简单性。您将完全控制。
Ice是很酷:)
我使用C#和一个跨平台的C++应用程序之间的通信命名管道与己无关,但良好的效果。除非那个插座绝对是要走的路。
套接字很不错。它们使您能够非常轻松地在每个组件周围创建一个黑匣子测试层,并在每台组件上运行每个组件。
安全性绝对值得关注,但根据它的重要性,有很多选择。您可以使用SSL,自定义握手,密码保护登录和防火墙来帮助保护它。
编辑: 不是我推荐的东西,但也有使用JNI的共享内存。只是觉得我会提到它,因为它不在你的名单上。
你的观点是关于插座和安全。谢谢。 +1 – 2009-07-30 22:07:40