![](/img/trans.png)
[英]What is the best approach for IPC between Java and C++ apps running on the same machine?
[英]What is the best approach for IPC between Java and C++?
我想在单个 JVM 应用程序(一个进程,可能是多个线程)和链接到 C++ dll 的本机 C++ 应用程序之间实现一个强大的 IPC 解决方案。 dll 可能位于也可能不在同一台物理机器上。 这样做的最佳方法是什么?
任何建议将不胜感激! 谢谢!
我使用标准的TCP / IP套接字,应用程序监听某个端口,并且库连接到它以报告它必须报告的内容并期望得到答案。
抽象是健壮的,得到很好的支持,并且没有互操作问题。
你有没有考虑过Facebook的Thrift框架 ?
Thrift是可扩展的跨语言服务开发的软件框架。 它将软件堆栈与代码生成引擎相结合,以构建在C ++,Java,Python,PHP,Ruby,Erlang,Perl,Haskell,C#,Cocoa,Smalltalk和OCaml之间高效无缝工作的服务。
Thrift允许您在简单的定义文件中定义数据类型和服务接口。 将该文件作为输入,编译器生成用于轻松构建RPC客户端和服务器的代码,这些客户端和服务器可跨编程语言无缝通信。
它可以在TCP套接字上工作,并且序列化/反序列化已经内置。
阅读白皮书了解详情。
Google协议缓冲区可以帮助您以语言和平台中立的方式序列化数据。 它还将生成Java和C ++代码,以处理读取和写入序列化数据。 然后,您可以使用任何希望发送数据的通信机制。 例如,您可以通过TCP套接字或通过共享内存IPC发送它。
我正在寻找远程调用框架 ,我的纯C ++应用程序。 这些规格看起来非常有前景。 我要试一试。
mmm - DLL不是进程,所以我假设你的意思是你的Java应用程序和链接到DLL的其他一些本机应用程序之间的IPC。 肯定是套接字是这里的方式。 它将使您的一切变得更轻松。
另一个选择是使用JNI与DCOM实现交谈,但我认为你不会获得太多收益(除了必须处理COM和JNI的头痛:-))。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.