代理模式分布式计算

上传人:宝路 文档编号:47862543 上传时间:2018-07-05 格式:PPT 页数:28 大小:396.50KB
返回 下载 相关 举报
代理模式分布式计算_第1页
第1页 / 共28页
代理模式分布式计算_第2页
第2页 / 共28页
代理模式分布式计算_第3页
第3页 / 共28页
代理模式分布式计算_第4页
第4页 / 共28页
代理模式分布式计算_第5页
第5页 / 共28页
点击查看更多>>
资源描述

《代理模式分布式计算》由会员分享,可在线阅读,更多相关《代理模式分布式计算(28页珍藏版)》请在金锄头文库上搜索。

1、设计模式第九章代理模式-分布式计算设计模式回顾q 状态模式允许一个对象基于内部状态而拥有不同的行为 q 通过将每个状态封装进一个类,我们把以后需要做的任何 改变局部化了 q 状态转换可以由State类或Context类控制 q 使用状态模式通常会导致设计类的数目增加2设计模式目标q理解本地计算与分布式计算q分布计算角色与机制q远程方法调用(Remote Method Invocation)RMIq配置远程方法调用q远程方法中的参数传递qRMI与CORBA区别3设计模式本地计算与分布计算q本地计算: 组件共享一个公共的地址空间进行通信 。 q分布计算:组件调用不同机器上的地址空间的组 件进行通信

2、。JVM组件JVMJVM本地计算分布计算4设计模式分布计算q 分布计算角色:客户与服务器q 分布计算机制: 客户端以常规的方式进行方法调用,无须操心数据在网络上传输或者解析响应之类的 问题。提供服务的对象可能不在同一个虚拟机内,甚至可能不是Java语言实现的对象。 在客户端为服务器对象安装一个代理(proxy),客户调用此代理进行常规方法调用。客户 端代理负责与服务器进行联系。 在服务器端安装第二个代理对象。该服务器代理与客户端代理进行通信,以常规方式 调用服务器对象上的方法。clientServer发送请求数据返回响应数据在客户端与服务器之间传递对象5设计模式clientproxyproxy

3、server调用本地代理发送请求数据调用本地服务方法返回方法结果返回响应数据返回方法结果RMICORBASOAP6设计模式RMI、CORBA与SOAPq三种通信技术: RMI: Java的远程方法调用技术,支持Java的分布式对象之间的方法调用;CORBA:通用对象请求代理架构,支持任何编程语言编写的 对象之间的方法调用,使用Internet Inter-ORB协议(IIOP)支持对象间通信;SOAP:简单对象访问协议,使用基于XML的传输格式。7设计模式Java RMIClientServer对象A远程接口B 远程对象BB的代理:存根 (stub)远程引用层 RRL通信模块远程方法调用 返回

4、值B的代理:主干 (skeleton)远程引用层 RRLJava RMI架构通信模块命名服务注册对象B引用远程对象B引用8设计模式一般RMI概念服务器: 远程接口B:列出了可以远程调用的所有方法; 远程对象B:实现远程接口B的类实例化对象; 主干(skeleton):将客户端发送的参数反向序列化并调用远程对象上所需方法。方法返回,获得返回值并序列化发送回服务器通信模块。 远程引用层(RRL):为远程对象B创建一个远程对象引用。同时维护远程对象与其引用之间的映射。客户端: 存根(stub):以远程对象B的引用(唯一标识)、远程接口B方法描述来构造一个代理对象; 远程引用层(RRL):远程对象B的

5、引用到达RRL时,生成stub,并维护远程对象B的引用与stub之间的映射。9设计模式配置远程方法调用-1q 使用RMI创建C/S应用程序的步骤:服务器端: 定义远程接口,继承Remote接口(java.rmi包),其声明远程调用的方法,每 一方法必须声明抛出RemoteException异常。编写实现远程接口的类(服务器类),该类的对象就是远程对象。 实现远程接口继承服务器类:java.rmi.server.UnicastRemoteObject使用rmic工具,将上述服务器类生成存根和主干 rmic v1.2 服务器类编写一个主类,实例化服务器类,生成远程对象,并且向注册库命名注册远程对象

6、,利用java.rmi.Naming的方法:public static void bind (String name,Remote obj)public static void rebind (String name,Remote obj)10设计模式配置远程方法调用-2q 使用RMI创建C/S应用程序的步骤:客户端:编写客户机类,调用远程对象上的方法。利用java.rmi.Naming的方 法: public static Remote lookup(String name)注意:name以URL格式给出:rmi:/:/ (port默认1099) 启动注册库start rmiregistry

7、 port运行服务端主类,创建远程对象并向注册库注册该对象引用。运行客户机。11设计模式RMI C/S应用举例ClientServer调用远程方法sayHello( )返回结果:”Hello Client”Step 1: 定义远程接口,HelloInterface.java12设计模式RMI C/S应用举例Step 2:编写服务器类HelloImplementor,实现远程接口HelloInterface13设计模式RMI C/S应用举例Step 3:生成stub和skeleton:rmic v1.2 testrmi. HelloImplementorStep 4:编写一个主类HelloHel

8、per,实例化服务器类HelloImplementor ,生成远程对象,并且向注册库命名注册远程对象14设计模式RMI C/S应用举例Step 5:编写客户机类,调用远程对象上的方法15设计模式演示start rmiregistry 运行注册库 16设计模式远程方法中的参数传递q 传递非远程对象将对象传递给本地方法,传递的只是对象的引用。将非远程对象传递给远程方法,传递的只是对象的拷贝非远程客户信息对象ClientServerCustomer调用远程方法find,参数Customer对象返回结果比较客户端非远程对象信息在远程方法调用前后是否一样17设计模式远程方法中的非远程对象传递18设计模式

9、远程方法中的非远程对象传递19设计模式远程方法中的非远程对象传递20设计模式演示21设计模式远程方法中的参数传递q 传递远程对象将远程对象传递给远程方法,那么远程方法接收到的是一个存根对象.collagestudentServerClient调用远程方法add,传递远程对象student返回结果Stub对象22设计模式远程方法中远程对象传递23设计模式远程方法中远程对象传递24设计模式远程方法中远程对象传递25设计模式演示26设计模式RMI与CORBAq与RMI不同,CORBA允许Java对象与其他语言编 写的对象之间进行相互调用。其依赖于客户端与 服务器端同时具有对象对象请求代理(ORB). q使用IDL描述接口.27设计模式总结q理解本地计算与分布式计算q分布计算角色与机制q远程方法调用(Remote Method Invocation)RMIq配置远程方法调用q远程方法中的参数传递qRMI与CORBA区别28

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

当前位置:首页 > 中学教育 > 教学课件

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