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) |
+--------------+