远程过程调用RPC简介 推荐
2012-01-17 11:00
274 查看
产生动因:
1、开发基于SOCKET的网络软件非常复杂(如:FTP、TELNET),2、位于不同机器上的软件互操作困难(如:连接管理、异构)。从而导致RPC(Remote Procedure Calling )的产生。
工作原理:
以对某银行帐户的一个存款过程为例:
调用过程:
如上图所示,共分为如下几步:
1)客户按本地调用的方式直接调用本地的客户指代,客户指代具有与服务器相同的过程接口
2)客户指代 将客户的调用请求进行加工、打包向底层通信机制(如套接字)发出请求消息,客户指代不进行任何逻辑处理,只是一个中介
3)客户端通过底层的通信机制将消息传送给服务器端的底层通信机制
4)服务器 需要部分地解析消息,找出客户希望调用的服务器程序
5)服务器指代对消息进行解析,从中获得调用者的参数,然后调用服务器程序
6)服务器程序执行相应的过程
7)服务器程序将结果返回给服务器指代
8)服务器指代将结果打包,向底层通信机制发出应答消息
9)服务器端通信机制将消息传送给客户端通信机制
10)客户端节点上也可能有多个调出点,通信机制需要部分地解析返回的消息,找出消息应该返回给哪个客户程序,并将消息发送给对应的客户指代
11)客户指代从消息中解析结果,返回给客户程序
其中,客户端指代(Stub)的主要工作包括:
1)建立客户与服务器之间的连接
2)将客户的高层调用语句打包为一条底层的请求消息
这一过程在RPC中被称为编排(marshal)
3)等待服务器返回应答消息
4)将来自服务器底层的应答消息解析为可以返回的数据
这一过程在RPC中被称为还原(unmarshal)
5)将返回值传送给客户程序
需要特别处理:编码、字节序等问题
服务器端的指代除了需要进行编排、还原外,还需要区分客户所请求的过程名,然后将客户的请求分派(dispatch)给正确的过程。
“指代” 目前主要被用于专门代表客户端的代理程序,而服务器端则由新的机制予以支持。
在CORBA中专门分离出了对象适配器(OA:Object Adaptor),在EJB中发展出了构件容器,用于在运行过程中专门管理构件的各种状态。此时的服务器端不仅负责请求分派,还负责向底层机制的注册(以方便请求的定位),以及过程的激活(以加强系统的灵活性)等等功能。
基于RPC的开发过程:
1、定义并编译接口
2、编写实现具体服务功能的代码
3、编译、连接,产生可执行的服务器程序
4、编写客户端代码
5、编译、连接,产生客户程序
6、运行服务器端程序
7、运行客户端程序
主要实例:
SUN公司等提出的ONC(Open Network Computing)RPC,主要由SUN予以实现。
OSF(Open Software Foundation)RPC影响最大,主要由DCE(Distributed Computing Environment)实现,DCE是OSF提出的分布计算体系结构。
1、开发基于SOCKET的网络软件非常复杂(如:FTP、TELNET),2、位于不同机器上的软件互操作困难(如:连接管理、异构)。从而导致RPC(Remote Procedure Calling )的产生。
工作原理:
以对某银行帐户的一个存款过程为例:
调用过程:
如上图所示,共分为如下几步:
1)客户按本地调用的方式直接调用本地的客户指代,客户指代具有与服务器相同的过程接口
2)客户指代 将客户的调用请求进行加工、打包向底层通信机制(如套接字)发出请求消息,客户指代不进行任何逻辑处理,只是一个中介
3)客户端通过底层的通信机制将消息传送给服务器端的底层通信机制
4)服务器 需要部分地解析消息,找出客户希望调用的服务器程序
5)服务器指代对消息进行解析,从中获得调用者的参数,然后调用服务器程序
6)服务器程序执行相应的过程
7)服务器程序将结果返回给服务器指代
8)服务器指代将结果打包,向底层通信机制发出应答消息
9)服务器端通信机制将消息传送给客户端通信机制
10)客户端节点上也可能有多个调出点,通信机制需要部分地解析返回的消息,找出消息应该返回给哪个客户程序,并将消息发送给对应的客户指代
11)客户指代从消息中解析结果,返回给客户程序
其中,客户端指代(Stub)的主要工作包括:
1)建立客户与服务器之间的连接
2)将客户的高层调用语句打包为一条底层的请求消息
这一过程在RPC中被称为编排(marshal)
3)等待服务器返回应答消息
4)将来自服务器底层的应答消息解析为可以返回的数据
这一过程在RPC中被称为还原(unmarshal)
5)将返回值传送给客户程序
需要特别处理:编码、字节序等问题
服务器端的指代除了需要进行编排、还原外,还需要区分客户所请求的过程名,然后将客户的请求分派(dispatch)给正确的过程。
“指代” 目前主要被用于专门代表客户端的代理程序,而服务器端则由新的机制予以支持。
在CORBA中专门分离出了对象适配器(OA:Object Adaptor),在EJB中发展出了构件容器,用于在运行过程中专门管理构件的各种状态。此时的服务器端不仅负责请求分派,还负责向底层机制的注册(以方便请求的定位),以及过程的激活(以加强系统的灵活性)等等功能。
基于RPC的开发过程:
1、定义并编译接口
2、编写实现具体服务功能的代码
3、编译、连接,产生可执行的服务器程序
4、编写客户端代码
5、编译、连接,产生客户程序
6、运行服务器端程序
7、运行客户端程序
主要实例:
SUN公司等提出的ONC(Open Network Computing)RPC,主要由SUN予以实现。
OSF(Open Software Foundation)RPC影响最大,主要由DCE(Distributed Computing Environment)实现,DCE是OSF提出的分布计算体系结构。
相关文章推荐
- 远程过程调用RPC简介
- rpc远程过程协议调用
- 远程过程调用RPC
- 远程过程调用RPC
- RabbitMQ九:远程过程调用RPC
- RabbitMQ入门教程(八):远程过程调用RPC
- Hprose轻松实现远程过程调用(RPC)
- Openstack Nova 源码分析 — RPC 远程调用过程
- 【Java】java实现的远程调用例子 rpc原理
- RPC远程调用问题
- [C#]在.NET调用加了SSL验证的WebService-根据验证过程远程证书无效
- JSON-RPC轻量级远程调用协议介绍及使用
- 【远程调用框架】如何实现一个简单的RPC框架(四)优化二:改变底层通信框架
- 利用c#实现远程注入非托管WIN32程序,并利用嵌入汇编调用非托管WIN32程序中的内部过程
- 远程调用服务(RPC)和消息(Message Queue)对比及其适用/不适用场合(转)
- 远程过程调用RPC RMI(Remote Method Invocation)和Web Service
- webservice之RPCClient 远程调用服务
- dubbo远程调用过程中,把参数bean转换成了HashMap
- web service与远程调用(RPC)的区别
- JSON-RPC轻量级远程调用协议介绍及使用