代码之家  ›  专栏  ›  技术社区  ›  David Coufal

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

  •  6
  • David Coufal  · 技术社区  · 16 年前

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

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

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

    4 回复  |  直到 15 年前
        1
  •  9
  •   oxbow_lakes    16 年前

    我不知道您为什么认为基于套接字的通信会有安全问题(使用SSL)。这通常是一个非常好的方法 语言不可知论 ,假设您有一个定义良好的通信协议。看看谷歌的 protocol buffers 例如,它们生成所需的Java类和流。

    根据我的经验,文件系统(尤其是网络文件系统)不太适合这样的通信,因为它们不一定需要调优 消息传递 (例如,我见过缓存问题导致目标进程无法获取文件)。

    另一个选择是 消息传递 层( AMQ 例如,TIBCO),尽管这可能需要更大的管理开销(加上专业知识)。

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

        2
  •  3
  •   Ron Warholic    16 年前

    我已经使用了命名管道来在C和跨平台的C++应用程序之间进行通信,并没有什么好的结果。除非插座是绝对可行的。

        3
  •  2
  •   patros    16 年前

    插座很好。它们使您能够非常容易地在每个组件周围创建一个黑盒测试层,并在自己的机器上运行每个组件。

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

    编辑: 我不建议这样做,但也有使用JNI的共享内存。我想我会提到它,因为它不在你的名单上。

        4
  •  1
  •   Draemon    16 年前

    Ice 很酷:)

    推荐文章