2012-03-15 95 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