远程过程调用(RPC)是一个协议,程序可以使用这个协议请求网络中另一台计算机上某程序的服务而不需知道网络细节。(过程调用有时也称作函数调用,或子例行程序调用。)RPC使用client/server模型。请求程序是client,而服务提供程序则为server。就像一般的本地过程调用一样,RPC是一个同步操作,直到远程过程结果返回请求程序才可以挂起。尽管如此,使用轻质进程或线程时,它们共享同一地址空间,是允许多个RPC并发执行的。
当使用RPC的程序语句被编译成可执行程序时,一个存根将会被包括在编译的代码中,它相当于远程过程代码的代表。
当程序运行,过程调用发生,存根收到请求并将其转发给本地计算机中的一个客户端运行时刻程序。这个客户端运行时刻程序知道如何访问远程计算机及服务器应用程序,它将向网络发送请求远程过程的消息。类似地,服务器也包括一个运行时刻程序及与远程过程连接的存根程序。结果将以相同方式返回。
有多种RPC的模型与实现。一种较流行的模型与实现是开放软件基金会(Open Software Foundation)的分布式计算环境(DCE)。电子和电气工程师协会IEEE在它1991年11月的ISO Remote Procedure Call Specification, ISO/IEC CD 11578 N6561, ISO/IEC中定义了RPC。
RPC跨越了网络通信的开放系统互联(OSI)模型中的传输层与应用层。RPC使得一个包括网络中分布的多个程序的应用程序的开发变得更容易。
不同的client/server的通信方法还有消息队列及IBM的高级程序对程序通信(APPC)。