2012-03-15 112 views
3

我有类CPU负责进程处理,我队列进程。 CPU端程序在服务器上实现,进程队列在客户端。协议 - TCP。 如何从服务器的类进程调用方法,如果该类的实例是在客户端创建的。C++远程方法调用

这个问题的可能解决方案是什么? 也许将对象通过网络传递给服务器更容易(当然如果可能的话)? C++是否提供某种类型的RMI库?

实际上,我的Process类只有一个成员 - 带有名称的字符串,也许它更容易将此字符串传递给服务器,然后重新创建服务器端的对象?

+0

C++有很多库,该语言本身不提供任何远程支持。 – Nick 2012-03-15 10:55:51

回答

1

CORBA是你真正想要的。它提供了将消息发送到远程对象的机制,就好像它们在本地一样。

+1

哎哟... CORBA可能有点矫枉过正,取决于用户实际需要做什么。无论如何,即使有一些时间让事情变得正确,一旦你知道它实际上不是很难用CORBA实现服务。 – 2012-03-15 12:04:47

1

看看Thrift(http://thrift.apache.org/)。这不是唯一的选择,但它使用起来非常简单,它还可以调用方法并在不同语言之间传递对象。您可以使用特殊语言定义服务,运行编译器为客户端和服务器生成C++代码(或任何其他您喜欢的语言),然后在机器之间调用方法。

有一个关于它的漂亮的演示,我把在SlideShare上如果你有兴趣:

http://www.slideshare.net/dvirsky/introduction-to-thrift

0

您可以使用XML-RPC。它是一种轻量级且易于使用的RPC机制。你可以得到它here