C++ 和 Java 对象通信

Posted

技术标签:

【中文标题】C++ 和 Java 对象通信【英文标题】:C++ and Java objects communication 【发布时间】:2010-09-01 16:18:45 【问题描述】:

我需要在我的应用程序中建立 C++ 层和 Java 层之间的通信模型。最初,我计划将 SOAP 与 XML 结合使用,但我的客户有兴趣建立一个数据库通信通道。

我是 DB 新手,不知道如何继续。我想听听您对使用数据库实现C++和Java层之间的对象通信的真诚建议。

谢谢, 呸

【问题讨论】:

这两层如何与数据库交互?您需要从 Java 调用 C++ 代码还是反过来? 不希望在Java层建立对象数据库,从C++层查询细节并填充对象属性。 让您的客户相信 CORBA 将是一种不那么受虐的方法。 您是否正在尝试将对象从 C++ 转换为 Java(即,将 C++ 字符串转换为 Java 字符串,反之亦然)? 【参考方案1】:

数据库作为通信? 颤抖

http://en.wikipedia.org/wiki/Database-as-IPC

这是一种反模式。你能改变客户的想法吗?

套接字比成熟的 SOAP 接口更容易。

【讨论】:

【参考方案2】:

如果您有 2 个不同的应用程序进行通信,那么套接字就是最佳选择。如果你的 C++ 层更像是一个库,你也可以使用 JNI(http://en.wikipedia.org/wiki/JNI,google for tutorials)。

【讨论】:

【参考方案3】:

通信通道和阻塞模型的选择很大程度上取决于应用程序,但如果您不需要担心安全性,套接字可能会工作得最好。 SSL/Mutual auth 是您的下一步。

我自己推出了自己的产品,但如果我必须再做一次,我会使用 google 协议缓冲区。 http://code.google.com/p/protobuf/

它们似乎捕获了人们想要从 ASN1 中得到的大部分内容(但并非全部搞砸了),并且让您可以做人们经常尝试通过序列化 java 属性来做的事情。

【讨论】:

以上是关于C++ 和 Java 对象通信的主要内容,如果未能解决你的问题,请参考以下文章

转JNI 对象处理

Java 应用程序和 C++ 应用程序之间的通信

Java 应用程序和 C++ 应用程序集成/通信

C++ 对象间通信框架 V2.0 ××××××× 之

进程间通信:传递 C 风格的结构与 C++ 对象

C++ 与 Python 函数通信