Java网络程序设计 教学课件 ppt 作者 房晓溪 第7章 远程方法调用

上传人:E**** 文档编号:89425017 上传时间:2019-05-25 格式:PPT 页数:18 大小:120.50KB
返回 下载 相关 举报
Java网络程序设计 教学课件 ppt 作者 房晓溪 第7章  远程方法调用_第1页
第1页 / 共18页
Java网络程序设计 教学课件 ppt 作者 房晓溪 第7章  远程方法调用_第2页
第2页 / 共18页
Java网络程序设计 教学课件 ppt 作者 房晓溪 第7章  远程方法调用_第3页
第3页 / 共18页
Java网络程序设计 教学课件 ppt 作者 房晓溪 第7章  远程方法调用_第4页
第4页 / 共18页
Java网络程序设计 教学课件 ppt 作者 房晓溪 第7章  远程方法调用_第5页
第5页 / 共18页
点击查看更多>>
资源描述

《Java网络程序设计 教学课件 ppt 作者 房晓溪 第7章 远程方法调用》由会员分享,可在线阅读,更多相关《Java网络程序设计 教学课件 ppt 作者 房晓溪 第7章 远程方法调用(18页珍藏版)》请在金锄头文库上搜索。

1、第1页,第7章,远程方法调用,第2页,主要内容,远程方法调用简介 利用RMI建立分布式系统 定义远程对象 桩/构架层 RMI如何工作 分布垃圾回收 RMI和OSI参考模型 安全 小结,第3页,7-1 远程方法调用简介,使用底层的Socket开发分布式应用程序必须设计协议。 Javad的RMI可以取代底层的Socket,它是其他系统所使用的RPC的形式之一。 使用RMI,你不仅可以在本地机创建和初始化对象,而且还可以在其他(可能是远程)机器上创建对象,并且和这些对象进行通信,就像与本地对象进行通信一样。 另一方面,使用RMI,通信接口被抽象成本地的过程调用。这样就不再需要一个协议,分布式应用程序

2、的开发也变得更加容易。,第4页,7-2 利用RMI建立分布式系统,RMI非常类似于其他系统中的RPC机制,但是比RPC更易用。当所有参数被传送给远程目标并且被解释,然后将结果返回给调用者时,程序员会有一个错觉,以为是从本地类文件中调用一个本地方法。,第5页,本地与远程方法调用,第6页,RMI 特征,透明的垃圾回收。 分布的垃圾回收。 对流的方便的访问。,第7页,7-3 定义远程对象,支持对存在于不同虚拟机上对象的无缝的远程调用。 支持服务器对客户的回调。 把分布式对象模型自然地集成到Java语言里,尽可能地从语义上保留Java的面向对象的特性。 使分布式对象模型和本地Java对象模型间的不同表

3、面化。 使编写可靠的分布式应用程序尽可能简单。 保留Java run-time环境所提供的安全性。 为达到这些主要目标,RMI系统致力于成为灵活的和可扩展的。RMI系统的目标还包括提供: 多样化的远程调用机制,如unicast和nulticast。 支持多传输的能力。 分布的垃圾回收。,第8页,7-4 桩/构架层,桩/构架层 远程引用层 传输层,第9页,7-4 桩/构架层,RMI系统由以下3层组成 桩/构架(stub/skeleton)层 远程引用层 传输层。,第10页,RMI系统结构,第11页,7-4-1 桩/构架层,桩/构架是应用程序与系统其他部分的接口。 桩/构架层通过抽象编组流(使用对

4、象序列化),传输数据到远程引用层。所以,此层并不处理任何特定的传输。 初始化远程调用、序列化(Marshal)发送的参数、提示远程引用层将进行调用、反序列化(Unmarshal)返回值(或异常)以及提示远传输层调用完成。 服务器端的构架要负责:反序列化客户端输入的参数,调用实际的远程对象实现,以及将返回值(或异常)序列化为流,以传输给客户。桩/构架是应用程序与系统其他部分的接口。 桩/构架层通过抽象编组流(使用对象序列化),传输数据到远程引用层。所以,此层并不处理任何特定的传输。 初始化远程调用、序列化(Marshal)发送的参数、提示远程引用层将进行调用、反序列化(Unmarshal)返回值

5、(或异常)以及提示远传输层调用完成。 服务器端的构架要负责:反序列化客户端输入的参数,调用实际的远程对象实现,以及将返回值(或异常)序列化为流,以传输给客户。,第12页,7-4-2 远程引用层,远程引用层是桩/构架层的中间层。它负责为独立于客户桩和服务器构架的,多种形式的远程引用和调用协议提供支持。,第13页,7-4-3 传输层,传输层是一个低级的层,它在不同的地址空间内传输序列化的流。传输层负责建立到远程地址空间的连接,管理连接,监听外来调用,维护驻留于同一个地址空间的远程对象表,为外来的调用建立连接,以及根据远程调用的目的定位调度程序,并传递连接到该调度程序。,第14页,7-5 RMI如何

6、工作,首先,一个调用将通过桩/构架层传递,桩/构架层作为应用程序与RMI系统其他部分的一个接口来提供服务。它的惟一目的就是通过序列化流,传输数据到远程引用层。实际上,这也是对象序列化开始应用的地方它使Java对象能够在不同的地址空间进行传输。 一旦数据通过桩/构架层传递,那么它将通过远程引用层。远程引用层实现了调用的语义,并且使用面向连接的流(如TCP),将数据传递到传输层。这就意味着,远程引用层要负责确定对象的性质,它是驻留在本地机上,还是通过网络驻留于远程机器。远程引用层还要确定是否可以被实例化,以及是否可以自动启动,或者它是否需要事先声明和初始化。 最后,数据将到达传输层。传输层负责建立

7、连接并管理这些连接。,第15页,7-6 分布垃圾回收,RMI使用一个引用计数()垃圾回收算法,它使RMI可以跟踪每一个虚拟机上的所有活动引用。当一个引用进入虚拟机,它的引用计数就增加。当一个活动引用结束,引用计数就减少。如果计数为0,就说明没有活动引用,所以该对象就被回收。 需要注意的是,由于对象通过网络传递,所以,RMI系统还要保持对虚拟机标识符的跟踪,以确保RMI的垃圾回收器回收的是既没有被本地调用,也没有被远程调用的对象。 另外,只要有对远程对象的本地引用存在,它就不能被回收,因为它将传递远程调用并返回给客户。传递一个远程对象将增加标识符到所传递对象的虚拟机被引用集中。,第16页,7-7

8、 RMI和OSI参考模型,第17页,7-8 安全,RMI使用很简单的方式创建客户与服务器之间的连接。对象被序列化后,以普通文本的方式通过网络传输。由于它们没有被加密,所以任何监视网络传输的人都能够读网络上所传输的所有数据。 没有认证。客户只要请求对象(桩),服务器就提供给它,后续的通信都被假定来自同一个客户。 对于对象没有访问控制。 RMI注册表本身没有安全检查。所有调用者都被允许进行请求。 桩被假定为与构架相互匹配。然而,程序有可能被构造为类似于RMI网络调用,这样就允许任何数据被包含于请求中。 在桩和构架间没有版本控制。这样,客户程序就有可能使用低级别的桩访问较高级的构架,从而破坏版本间的

9、二进制兼容性。,第18页,7-9 小结,使用Socket开发分布式应用程序需要设计协议,这往往导致一些错误。使用RMI可以避免设计协议。RMI是其他系统中所使用的RPC的一种。在RMI中,通信接口被抽象为本地的过程调用。所以,不需要再设计一个协议。 RMI系统由3层组成:桩/构架层、远程引用层和传输层。每一层都是由特定的接口和协议来定义,因此,每一层相对于它的相邻层是独立的,并且,某一层在实现上的改变,不会影响到系统中的其他层。 桩/构架层通过序列化流,负责传输数据到远程引用层。实际上,这也是对象序列化开始应用的地方它使Java对象能够在不同的地址空间进行传输。 远程引用层负责为独立于客户桩和服务器构架的,多种形式的远程引用和调用协议提供支持。 传输层负责建立到远程地址空间的连接,管理连接,监听新来的调用,维护驻留于同一个地址空间的远程对象表,为外来的调用建立连接,以及根据远程调用的目的定位调度程序,并传递连接到该调度程序。 对于建立分布式应用程序、透明调用、分布的垃圾回收以及方便的访问流来说,RMI所支持的这些特性是最为重要的。,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号