Remote Procedure Call
跳到导航
跳到搜索
什么是RPC(远程过程调用)
远程过程调用(Remote Procedure Call),简称RPC,是一种让某些服务由位于不同进程 (甚至可能在网络中某个位置的机器上) 而不是在本地可用的代码执行的手段。 这是一种常见的做法,例如由应用程序服务器或web应用程序采用。
RPC的流行协议是COM、Corba或SOAP。
RPC简而言之
一个RPC系统依赖于一个编译器,该编译器将从高级接口描述 (通常是IDL或Interface Description Language) 生成帮助代码。 希望调用服务的 “客户端” 代码实际上将在本地调用代理函数,并将其传递给远程代码的参数。 然后,代理对参数进行整理 (或序列化),以使它们适合发送缓冲区,并将该缓冲区发送到服务器代码 (例如,涉及UDP数据包或某些本地消息队列) 并等待响应。
服务器将收到封送的数据包,并将其传递给存根Stub,该存根将重新创建数据 (unmarshall) 并调用实际服务过程,检索结果并将其汇总回给客户端的消息中。
( client ) ( server ) | ^ | sayHello("World") | serverSayHello("World") V | +------\ - - - <channel>- - - - \-------+ | PROXY > -> iXX mYY Str'W o r l d \0' -> > STUB | +------/ - - - - - |- - - - /-------+ | marshalled message ^ ^ /_\ /_\ : : : : : |------------|\ : : | .idl file L_\ : + - compiler - | (describing | - compiler + | interface) | +--------------+