[分享] RMI(or Remote Procedure Call) in C++

看板C_and_CPP (C/C++)作者 (小乖)時間15年前 (2011/03/17 18:34), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串1/1
之前設計 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
文章代碼(AID): #1DWUFHF9 (C_and_CPP)
文章代碼(AID): #1DWUFHF9 (C_and_CPP)