一 基本概念:
1. Stub(存根):当客户端要在远程对象上调用一个方法的时候,实际上调用的是代理对象上的一个普通方法,称这个代理对象为stub。这RMI的存根定义就是使用了这样一个理解:在与远程发生通讯调用时,把通讯调用的所有细节都通过对象的封装形式给隐藏在后端。客户端的stub方法构造了一个信息块,包括:远程对象的标识,被调用方法描述,参数。
2. Skeleton(骨架):它的内部就是真正封装了一个类的形成调用体现机制。包括我们熟知的ServerSocket创建、接受、监听、处理等。接收者对象做这些事:
(1)反编组参数
(2)定位要调用的对象
(3)调用所需的方法
(4)捕获返回值或调用产生的异常,并且反编组
(5)返回值编组,返回客户端。
3. Mashalling(编组):在内存中的对象转换成字节流,以便能够通过网络连接传输,适合虚拟机之间传递。
4. Unmashalling(反编组):在内存中把字节流转换成对象,以便本地化调用。
5. Serialization(序列化):编组中使用到的技术叫序列化。
6. Deserializationg(反序列化):反编组中使用到的技术叫反序列化。
二 示意图
三 只说说各自的特点
数据格式,传输方式,适用场景和优缺点。
(1) SOAP:简单对象访问协议,提供一个调用远程方法的协议。而SOAP是基于XML和HTTP的分布式对象的通信协议
独立于编程语言,使用XML传输格式。
使用WSDL(Web服务描述语言)格式的服务描述文件描述web服务的接口:被调用的方法,参数和返回值类型。
WSDL文件并不说明服务 做什么,只说明参数和返回值的类型。
最吸引人的地方是语言中立。
(2)CORBA 通用对象请求代理架构,使用IIOP(Internet Inter-ORB协议)支持对象间通信。
定义了接口定义语言(IDL)和应用编程接口(API),从而通过实现对象请求代理(ORB)来激活客户/服务器的交互。
ORB提供了一种机制,通过这种机制,对象可以透明的发出请求和接收响应。
CORBA仅仅是一个规范,而不是一个实现。