C ++ RPC教程?

时间:2009-10-18 14:20:26

标签: c++ visual-c++ visual-studio-2008 rpc

我想在Windows平台上学习编程C ++(本机)以进行RPC通信。我想学习服务器和客户端。我还想学习一些高级主题,如性能和安全性。

任何好的推荐材料都可以阅读?

(顺便说一下:我用Google搜索了一些,但是所有这些都太简短或与COM有关,我想学习没有COM的纯RPC编程。我正在使用VSTS 2008和C ++。)

5 个答案:

答案 0 :(得分:9)

我会从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 演示数据类型序列化;两个程序都使用[encode]和[decode]属性。
  • PIPES 演示了管道类型构造函数的用法。
  • RPCSVC 演示了使用RPC实现服务。
  • STROUT 演示如何在服务器上为二维对象(指针数组)分配内存,并将其作为[out] -only参数传递回客户端。然后客户端释放内存。此技术允许存根调用服务器,而无需事先知道将返回多少数据。

答案 1 :(得分:7)

试试这个:

Overview

Technical Reference - 也描述了它是什么&它是如何工作的

答案 2 :(得分:4)

为什么要学习“原始”RPC?有许多优秀的高级RPC实现:

  1. CORBA实施
  2. google's protocol buffers
  3. Thrift

答案 3 :(得分:2)

你需要学习3种不同的东西:

  • C ++编程语言
  • RPC
  • 某些C ++ RPC库

答案 4 :(得分:2)

RPC ==“远程过程调用”

本质上,它认为两个端点之间的通信最好以这些端点的概念为模型,这些端点相互之间进行逻辑函数调用。一般来说,一方以某种方式“发布”一个API(例如,如果你使用SOAP,通常你会有一个名为WSDL(发音为wizdel)的文件,它枚举你回复的函数......客户端将首先下载你的WSDL,然后调用你的可用API)...现在,几乎所有可用的技术都会将他们的特定协议分层在HTTP之上(例如Web服务,UPnP,REST)。这通常意味着你是服务器在Web服务器上实现......

因此,如果您需要实现的只是客户端,那么您可以使用libcurl来满足您的所有HTTP需求......