8

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

有什么好的推荐读物吗?

(顺便说一句:我用谷歌搜索了一些,但它们都太简短或与 COM 相关,我想学习没有 COM 的纯 RPC 编程。我正在使用带有 C++ 的 VSTS 2008。)

4

6 回答 6

10

我将从RPC 上的 Platform SDK 示例开始

  • 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演示了管道类型构造函数的使用。
  • RPCVSC演示了使用 RPC 实现服务。
  • STROUT演示了如何在服务器上为二维对象(指针数组)分配内存,并将其作为 [out]-only 参数传递回客户端。然后客户端释放内存。这种技术允许存根调用服务器而不事先知道将返回多少数据。
于 2009-10-18T14:51:46.993 回答
9

尝试这个:

概述

技术参考- 还描述了它是什么以及它是如何工作的

于 2009-10-18T17:31:19.540 回答
4

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

  1. CORBA 实现
  2. 谷歌的协议缓冲区
  3. 节约
于 2009-10-18T16:19:37.703 回答
3

您可能需要学习 3 种不同的东西:

  • C++ 编程语言
  • RPC
  • 一些 C++ RPC 库
于 2009-10-18T14:22:03.833 回答
2

RPC == "远程过程调用"

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

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

于 2009-10-18T15:23:33.077 回答
1

看看 RCF、 Deltavsoft_LinkCodeProject_Link

主要行为是 RCF 不使用单独的 IDL(接口定义语言)。

于 2012-09-20T14:56:01.160 回答