远程过程调用 (RPC) 是一种协议,通过它一个应用可以在无需了解网络细节的情况下去请求位于网络中另一台电脑上的应用所提供的服务。过程调用有时也称为方法调用或者子程序调用。
RPC 基于 CS ( ​​​client-server​​​) 模型。请求程序是客户端,提供服务的程序是服务端。就像一个一般的本地过程调用那样,RPC 也是一个 ​​​同步​​操作,要求请求程序一直阻塞直到收到远程过程的返回结果。尽管如此,通过使用轻量级的多进程或者共享同一地址空间的多线程等手段仍然能够实现多 RPC 调用的并发效果。

RPC 消息处理

当使用了 RPC 框架的程序语句被编译为一个可执行程序时,会在编译后的代码中保留一个

​存根​​,用以标识远程过程调用代码。当该程序被执行并且执行过程调用时,该存根将会接受该请求并将其转发给本地主机中的一个客户端

​运行时​​程序。


该客户端运行时程序知道怎样定位远程主机和服务端程序并将该请求通过网络发送消息到远程过程。类似的,服务端也有一个运行时程序并在远程过程中留有自己的存根接口。响应-请求协议以同样的方式进行返回。


CS 通信的 RPC 模型和替代方法

已经有很多 RPC 模型和

​分布式计算​​的实现。其中比较流行的一个模型和实现是开源基金会 (

​Open Software Foundation​​) 的 DCE (

​Distributed Computing Environment​​)。

​IEEE​​ 在 1991 年 11 月的 ISO Remote Procedure Call Specification、ISO/IEC CD 11578 N6561、ISO/IEC 中对 RPC 进行了定义。


RPC 跨越网络通信的

​开放系统互联​​模型中的传输层和应用层。RPC 使分布式网络中的多应用程序的开发变得更加容易。


CS 通信的其他方法还有

​消息队列​​以及 IBM 的高级程序对程序通信 (APPC:

​Advanced Program-to-Program Communication​​)。


原文链接:

​Remote Procedure Call (RPC)​​,发布日期:2016 年 10 月。


作者简介


远程过程调用 (RPC)_客户端


Margaret Rouse 是 WhatIs.com,TechTarget 百科及学习中心频道的编辑兼管理员。她负责帮助 IT 专业人员学会使用彼此高度专业化语言进行交流的相关内容。