RPC:Remote Produce Call 是这几个单词的缩写。
我们直译过来就是远程过程调用。对,这种技术是实现远端的过程调用,远端意味着跨主机、可能跨平台、跨网络、跨进程是毫无疑问的事情了,所以我们也可以使用RPC技术来实现本机上一个进程中方法调用另一个进程中的方法。使用这种技术客户机可以调用远端的服务器来执行工作,执行完后把结果集返回来。但是这种复杂性对用户来说是透明的,用户可以是系统的使用者,也可能是开发高层应用逻辑的开发员。
RPC是怎么工作的呢?我就在下面做了个草图来表达一下。以一个Hello过程来描述。
Client Server
Hello
|
|
|
|
Hello |
Client Stub |
|
|
|
Server Stub |
Client Runtime Liberary |
|
|
|
Server RuntimeLiberary |
Transport |
|
|
|
Transport |
客户调用过程如下:
1:客户端应用程序在客户机发出方法调用Hello。
2:Client Stub接受应用程序的方法调用,并把请求、数据组织成标准格式给Client Runtime Liberary层。
3:Client Runtime Liberary通过指定的通道(可能是管理、网络等)发送数据及请求。
服务接收过程如下:
1:Server RuntimeLiberary负责实时地从网络接收数据、请求。把它交给Server Stub。
2:Server Stub 负责把数据译成本地格式并进一步调用应用程序实现的服务。
3:执行服务Hello.打印出"Hello World" 。
服务端服务执行完后的返回过程:
1:服务把返回数据给Server Stub 。
2:Server Stub 把数据转换成标准格式给Server RuntimeLiberary。
3:Server RuntimeLiberary 则向客户方发送结果数据。
客户方的接受过程
1:Client Runtime Liberary接受数据交给Client Runtime Liberary。
2:Client Runtime Liberary把标准格式的数据译成本机、本地语言(是开发语言)的数据。并进而交给客户程序。
3:客户程序收到服务端处理后的信息了。客户如何利用这个信息呢?哦!这是他的事...................
RPC模型最初是由SUN公司提出来的,到在现在有多种RPC模型。我这里将要讨论的RPC知识是microsoft RPC模型。