java远程方法调用(RMI)

java远程方法调用(RMI)

图中显示了一个分布式的对象模型。在这个模型中,如果一个对象不仅被本地访问,而且还能够被远程访问,就称为远程对象。

如果一个对象只能被本地访问,就被称为本地对象。

图中白色的椭圆表示本地对象,深色的椭圆表示远程对象。

图中实线表示常规的本地方法调用,虚线表示远程方法调用。

为了保证各个对象之间的可靠地发送消息,该模型的实现通常使用TCP协议作为网络传输层的通信协议。

 

一般来说远程对象分布在服务器端,提供各种通用的访问。

对象模型的实现系统的功能:

1.把分布在不同节点上的对象之间发送的消息转换为字节序列,这个过程称为编组。

2.通过套接字建立连接并且编组后发送。

3.处理网络连接和传输时候的各种故障。

4.为分布在不同节点上的对象提供分布式垃圾收集机制。

5.为远程方法调用提供安全检查机制。

6.服务端运用多线程或者非阻塞通信机制,确保远程对象具有良好的并发性能,同时被多个客户访问。

7.创建于特定领域相关的各种本地对象和远程对象。

 

一些现成的,成熟的分布式对象模型的框架:

1.RMI(Remote Method Invoke,远程方法调用):JDK提供一个完善的,简单易用的远程方法调用框架,它要求客户端和服务端都是java程序。

2.CORBA(Common Object Request Broker Architecture,通用对象请求代理体系结构):分布式对象模型的通用框架,允许不同的语言编写

的对象能够彼此通信。

3.SOAP(Simple Object Access Protocol,简单对象访问协议):允许异构的系统之间能够彼此通信,以xml作为通信语言。一个系统能够访问另一个

系统对外公布的web服务。

 

RMI框架封装了所有底层通信细节,并且解决了编组,分布式垃圾回收,安全检查和并发性等通用问题。开发人员只需要专注于开发与特定问题领域相关的

各种本地对象和远程对象。

 

RMI对象为远程对象分布生成了客户端代理和服务端代理。位于客户端的代理类叫做存根(Stub),位于服务端的代理类叫做骨架(Skeleton)。

java远程方法调用(RMI)

客户端调用远程对象的一个方法的时候,实际上是调用本地的存根对象的对应的方法。

存根对象与远程对象实现了相同的接口。

存根对象采用平台无关的编码方式(java序列化机制)对方法的参数进行编组。

存根对象把以下信息发送给服务器:

1.被访问的远程对象的名字。

2.被调用的方法的名字。

3.编组后的参数的字节序列。

服务器接受到这些信息后,由骨架对象来进行处理:

1.反编组参数。

2.定位要访问的对象。

3.调用远程对象的相应方法。

4.获取方法的结果或者异常信息,进行编组。

5.发送给客户。

java远程方法调用(RMI),布布扣,bubuko.com

java远程方法调用(RMI)

上一篇:微信开发学习总结(一)——微信开发环境搭建


下一篇:GIS相关各组件介绍及比对