【RPC入门】RPC概念、原理及开发

RPC基础概念

RPC(Remote Procedure Call)—远程过程调用,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。
在一般的应用程序中,被调用的过程在相同的地址空间中运行,并把结果返回给发出调用的过程。在分布式环境中,客户机和服务器在不同的机器上运行,客户端调用在服务器端运行的过程,并把结果发送回客户机。这称为远程过程调用 (RPC),是 RPC 编程的基础。

RPC 工作原理

RPC采用客户机/服务器模式。请求程序就是一个客户机,而服务提供程序就是一个服务器。首先,客户机调用进程发送一个有进程参数的调用信息到服务进程,然后等待应答信息。在服务器端,进程保持睡眠状态直到调用信息到达为止。当一个调用信息到达,服务器获得进程参数,计算结果,发送答复信息,然后等待下一个调用信息,最后,客户端调用进程接收答复信息,获得进程结果,然后调用执行继续进行。

任何 RPC 客户机-服务器程序的重要实体都包括 IDL 文件(接口定义文件)、客户机 stub、服务器 stub 以及由客户机和服务器程序共用的头文件。客户机和服务器 stub 使用 RPC 运行时库通信。RPC 运行时库提供一套标准的运行时例程来支持 RPC 应用程序。

使用 RPC 编程是在分布式环境中运行的客户机和服务器应用程序之间进行可靠通信的最强大、最高效的方法之一。

RPC 客户机-服务器交互方式

图 1 说明客户机和服务器通过网络完成 RPC 调用的方式。
图 1. 基本的 RPC 客户机-服务器交互

当客户机应用程序发出远程过程调用时,在两端的 RPC 运行时库的帮助下,客户机 stub 把与这个调用相关的信息通过网络传递给服务器 stub,见 图 1。服务器 stub 把所需的信息提供给服务器应用程序。服务器应用程序执行远程过程调用,然后使用 RPC 运行时库通过服务器 stub 把结果传递给客户机 stub。最后,客户机 stub 把结果返回给客户机应用程序。stub 作为应用程序和 RPC 运行时之间的接口,以两者可以理解的格式交换信息。

在开发客户机-服务器应用程序时,客户机和服务器首先应该就要交换的过程的声明和定义达成一致。这就是接口起的作用,接口维护客户机和服务器都认可的所有过程声明和数据类型。

我们把所有共用的声明和数据类型放在接口定义语言 (IDL) 文件中,客户机和服务器将共享这个文件。我们在 IDL 文件中使用 UUID,以使之在网络上所有其他接口中保持惟一。UUID 是一个惟一的随机数,是由 uuidgen 实用程序使用网络地址信息和系统时间生成的。

开发 RPC 客户机-服务器应用程序

图 2 说明在开发简单的客户机-服务器分布式应用程序时涉及的步骤。
图 2. 开发 RPC 客户机-服务器应用程序

开发RPC应用程序涉及的步骤

  • 用 IDL 编译器编译 IDL 文件,生成客户机和服务器 stub 对象文件以及头文件。
  • 这个头文件包含共用的定义和过程。
  • stub 文件在远程过程调用期间作为应用程序和 RPC 运行时库之间的接口。
  • 头文件包含在客户机和服务器源代码文件中。
  • 用 C 编译器分别编译客户机和服务器文件,生成对象文件。
  • 客户机对象文件和客户机 stub 文件与 RPC 运行时库链接,生成客户机可执行程序。
  • 以相似的方式生成服务器可执行程序,见图 2。

reference

https://www.ibm.com/developerworks/cn/aix/library/au-rpc_programming/

猜你喜欢

转载自blog.csdn.net/signal926/article/details/84937103
RPC
今日推荐