2

我希望 linux 主机上的一个应用程序从 VM 中 Win7x64 上的应用程序调用过程。我猜VM在linux主机上运行并不重要,因为它应该使用套接字。如何处理这个计划?互联网上有任何图书馆吗?

编辑:

好吧,我看了看所有这些。XMLRPC 似乎是 SOAP 的某种前身。在我看来,Prototbuf 喜欢专注于大对象的简单序列化。所以我的决定落在了 SOAP 上。但现在我正在寻找一个好用的 c++ 绑定。我阅读了 apache axis2 手册的几页,但其他所有内容都很好用,而且无论如何都是用 C 语言编写的。

在我的具体情况下的另一个问题是:发送一些文本数字和参数以识别以文本形式调用和回复的程序,因为我知道被调用程序的签名,是否更容易发送?

Edit2: 由于 SOAP 只是一个标准,而 RPC 只是好奇,(想象一下类似 IP 上的函数指针:D),恕我直言,它们都不是解决方案。但是 ZeroMQ 确实是一个进步。

4

3 回答 3

2

RPC 没有魔法。我建议看看 ZeroMQ 和Google protobuf的组合。ZeroMQ 是一个非常易于使用的消息传递系统(您的通信层)。您将使用REQ/REP 模式。Google protobuf 用于描述和序列化/反序列化您的消息。这两个库都是跨平台的,甚至是跨语言的(ruby、python、c++ 等)

于 2012-11-05T18:04:57.773 回答
1

一个不错的替代方案是 XMLRPC,它运行在 HTTP 之上。至少它比 SOAP 简单。我用它来进行 Java-Python 通信,当时代码不多,但不知道有什么 C++ 库可以推荐,所以我就说http://en.wikipedia.org/wiki/XML- RPC及其 C++ 部分。

编辑后编辑问题:对于一个非常简单的解决方案,只需使用普通 HTTP,将请求路径映射到函数并使用 GET 或 POST 提供参数。尽可能简单地返回 HTTP 响应数据中的值:数字或字符串的纯文本,对于更复杂的返回值,如果可以确保二进制兼容性,则返回二进制 blob(相同的 CPU、相同的字长、普通结构,如果使用编译器结构打包选项需要),或者作为 json(甚至是 XML,但是你开始重新发明 SOAP/XMLRPC ......)。

于 2012-11-05T18:10:28.823 回答
1

你看过SOAP吗?它有利有弊,但可能会满足您的需求。

您的 Windows 机器是虚拟机这一事实应该不会有什么不同,只要它已启动并正在运行,并且只要您选择的系统通常将服务器视为逻辑上独立的套接字,您的解决方案将保持灵活。

于 2012-11-05T17:53:19.087 回答