[分享] RMI(or Remote Procedure Call) in C++
之前設計 Client/Server 程式時,都是用 message 來當作 protocol。
例如:
#define msg_open 1
#define msg_close 2
...
Client 將 message 透過 socket 傳給 Server,Server 再對此 message 做解譯動作。
這種設計方式簡單,但常常要處理很 routine 的工作,自己要處理封包代表的意義。(也
就是要解釋 buffer size 的大小問題)
比較好的處理方式是用 remote procedure call 的方式,將複雜的底層處理過程包裝起
來,client 需要 server 服務時,只要利用類似 function call 的方式就可以達成目的
。
通常這種做法像是 COBRA 通常都要用 IDL 的方式,寫一個語言無關的介面,然後再利用
程式碼產生器產生出目的語言 (C++、Java...etc)
下面這篇文章,就不用額外的程式碼產生器,而是利用 C++ preprocessor 來產生 C++
code,也就是只需要 C++ compiler 就搞定啦。
http://www.codeproject.com/KB/threads/Rcf_Ipc_For_Cpp.aspx
不過要注意的是:
1. 需要 C++ boost library (用到 Asio)
2. 我用 VS2010 編譯時,發生 error C3861: '_cpp_max': identifier not found
解法再此 link
https://connect.microsoft.com/VisualStudio/feedback/details/553420/std-cpp-max-and-std-cpp-min-not-available-in-visual-c-2010
3. 附上作者寫的 User Guide http://deltavsoft.com/w/RcfUserGuide/1.3/
有興趣可以玩玩看!! Have Fun!!
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.134.96.34
推
03/18 08:55, , 1F
03/18 08:55, 1F
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章