2009-10-18 126 views
8

我想在Windows平臺上學習編程C++(native)以進行RPC通信。我想學習服務器和客戶端。我還想學習一些高級主題,例如性能和安全性。C++ RPC教程?

任何好的建議閱讀材料?

(BTW:我用Google搜索了幾個,但他們都要麼過於簡略或COM有關,我想學習,而不COM純RPC編程我使用VSTS 2008年C++)

+1

我不是編程套接字,而是開發RPC客戶端和服務器。根據我在我的問題中的觀點,任何推薦的閱讀材料? – George2 2009-10-18 16:11:20

+1

你在看REST還是SOAP?還有其他的,但這些是流行的。 – Polaris878 2009-10-18 16:25:19

+1

不,我正在尋找RPC,純RPC編程。任何推薦的讀物? – George2 2009-10-18 16:27:14

回答

2

你需要學習大概3個不同的東西:

  • 的C++編程語言
  • RPC
  • 一些C++ RPC庫
+0

是的,根據我在我的問題中的觀點,任何推薦的讀物? – George2 2009-10-18 16:11:59

8

我會從Platform SDK samples on RPC開始。

  • ASYNCRPC示出了使用異步遠程過程調用的RPC應用程序的結構。它還演示了呼叫完成通知的各種方法。
  • CLUUID演示如何使用客戶端對象UUID來使客戶端能夠從遠程過程的多個實現中進行選擇。
  • DATA目錄包含四個項目:
    • DUNION說明了歧視(未包封)工會;
    • INOUT演示[in],[out]參數;
    • REPAS演示了represent_as屬性;
    • XMIT演示了transmit_as屬性。
  • DYNEPT演示了一個客戶端應用程序管理,通過動態終結其連接到服務器。
  • FILEREP目錄包含四個示例,說明開發人員如何使用RPC異步管道編寫簡單文件複製服務,多用戶文件複製服務,支持安全功能的服務以及服務。
  • HANDLES目錄包含三個程序AUTO,CXHNDL和USRDEF,它們分別演示了auto_handle,[context_handle]和通用(用戶定義)句柄。
  • HELLO是「Hello,world」的客戶端/服務器實現。「
  • PICKLE目錄包含兩個方案:
    • PICKLP演示數據程序序列化;
    • PICKLT演示數據類型的序列;這兩個程序使用[編碼]和[解碼]屬性
  • PIPES演示使用管道式構造函數
  • RPCSVC演示RPC服務的實現。
  • STROUT演示瞭如何在服務器上爲二維對象(指針數組)分配內存,並將其作爲[out]參數傳遞給客戶端。客戶端然後釋放內存。這種技術允許存根調用服務器,而不用提前知道將返回多少數據。
+0

謝謝謝!你推薦的鏈接確實包含了很好的代碼示例。除代碼示例外,我還需要一份描述RPC編程,內部結構,技巧等的綜合性文檔。除了代碼之外,還有哪些建議的文檔? – George2 2009-10-18 16:21:13

+1

嗯,有MSDN和適當的一些舊書,但RPC在很多方面都死了:大多數人會使用DCOM \ Com + \ ServicedComponent(這是基於RPC),真正很酷的孩子正在玩WCF。 – 2009-10-18 16:32:07

+0

我同意。但由於我維護一些使用RPC的遺留系統,因此我必須使用和學習RPC。任何推薦的讀物(我需要學習一些背景,可以幫助我理解你提到的優秀RPC樣本)? – George2 2009-10-18 16:39:53

2

RPC ==「遠程過程調用」

從本質上講,它的想法,兩個端點之間的通信最好對這些製作邏輯功能終端的概念模型呼籲對方。一般來說,一方以某種方式「發佈」一個API(例如,如果您使用SOAP,通常您會有一個名爲WSDL(發音爲wizdel)的文件,列舉您響應的功能...客戶端將首先下載你的WSDL,然後打電話給你可用的API)...現在,幾乎所有可用的技術都會將他們特定的協議放在HTTP之上(例如Web服務,UPnP,REST)..這通常意味着你服務器上的Web服務器的基礎上實現......

所以,如果你需要實現的是客戶端,那麼你也許可以使用libcurl的所有的HTTP的需要......

+0

謝謝dicroce!你提到的非常好!作爲RPC的初學者,我除了代碼示例外還需要一個描述RPC編程,內部結構,技巧等的綜合性文檔。除了代碼之外,還有哪些推薦的文檔? – George2 2009-10-18 16:26:01

4

你爲什麼想學習「原始」RPC?有很多很好的更高級別的RPC實現:

  1. CORBA實現
  2. google's protocol buffers
  3. Thrift
+0

我正在將一些使用RPC作爲編程協議的遺留系統進行集成。那麼,關於這個話題的任何推薦讀物? – George2 2009-10-18 16:28:10