代理模式-分布式计算.ppt

上传人:xt****7 文档编号:2519509 上传时间:2019-11-27 格式:PPT 页数:28 大小:396.05KB
返回 下载 相关 举报
代理模式-分布式计算.ppt_第1页
第1页 / 共28页
代理模式-分布式计算.ppt_第2页
第2页 / 共28页
代理模式-分布式计算.ppt_第3页
第3页 / 共28页
点击查看更多>>
资源描述
第九章,代理模式-分布式计算,2,回顾,状态模式允许一个对象基于内部状态而拥有不同的行为 通过将每个状态封装进一个类,我们把以后需要做的任何改变局部化了 状态转换可以由State类或Context类控制 使用状态模式通常会导致设计类的数目增加,3,目标,理解本地计算与分布式计算 分布计算角色与机制 远程方法调用(Remote Method Invocation)RMI 配置远程方法调用 远程方法中的参数传递 RMI与CORBA区别,4,本地计算与分布计算,本地计算: 组件共享一个公共的地址空间进行通信。 分布计算:组件调用不同机器上的地址空间的组件进行通信。,JVM,组件,JVM,JVM,本地计算,分布计算,5,分布计算,分布计算角色:客户与服务器 分布计算机制: 客户端以常规的方式进行方法调用,无须操心数据在网络上传输或者解析响应之类的问题。提供服务的对象可能不在同一个虚拟机内,甚至可能不是Java语言实现的对象。 在客户端为服务器对象安装一个代理(proxy),客户调用此代理进行常规方法调用。客户端代理负责与服务器进行联系。 在服务器端安装第二个代理对象。该服务器代理与客户端代理进行通信,以常规方式调用服务器对象上的方法。,client,Server,发送请求数据,返回响应数据,在客户端与服务器之间传递对象,6,client,proxy,proxy,server,调用本地代理,发送请求数据,调用本地服务方法,返回方法结果,返回响应数据,返回方法结果,RMI,CORBA,SOAP,7,RMI、CORBA与SOAP,三种通信技术: RMI: Java的远程方法调用技术,支持Java的分 布式对象之间的方法调用; CORBA: 通用对象请求代理架构,支持任何编程语言编写的 对象之间的方法调用,使用Internet Inter-ORB协议 (IIOP)支持对象间通信; SOAP: 简单对象访问协议,使用基于XML的传输格式。,8,Java RMI,Client,Server,对象A,远程接口B,远程对象B,B的代理:存根(stub),远程引用层 RRL,通信模块,远程方法调用,返回值,B的代理:主干 (skeleton),远程引用层 RRL,Java RMI架构,通信模块,命名服务注册,对象B引用,远程对象B引用,9,一般RMI概念,服务器: 远程接口B:列出了可以远程调用的所有方法; 远程对象B:实现远程接口B的类实例化对象; 主干(skeleton):将客户端发送的参数反向序列化并调用远程对象上所需方法。 方法返回,获得返回值并序列化发送回服务器通信模块。 远程引用层(RRL):为远程对象B创建一个远程对象引用。同时维护远程对象 与其引用之间的映射。 客户端: 存根(stub):以远程对象B的引用(唯一标识)、远程接口B方法描述来构造 一个代理对象; 远程引用层(RRL):远程对象B的引用到达RRL时,生成stub,并维护远程对象B 的引用与stub之间的映射。,10,配置远程方法调用-1,使用RMI创建C/S应用程序的步骤: 服务器端: 定义远程接口,继承Remote接口(java.rmi包),其声明远程调用的方法,每一方法必须声明抛出RemoteException异常。 编写实现远程接口的类(服务器类),该类的对象就是远程对象。 实现远程接口 继承服务器类:java.rmi.server.UnicastRemoteObject 使用rmic工具,将上述服务器类生成存根和主干 rmic v1.2 服务器类 编写一个主类,实例化服务器类,生成远程对象,并且向注册库 命名注册远程对象,利用java.rmi.Naming的方法: public static void bind (String name,Remote obj) public static void rebind (String name,Remote obj),11,配置远程方法调用-2,使用RMI创建C/S应用程序的步骤: 客户端: 编写客户机类,调用远程对象上的方法。利用java.rmi.Naming的方法: public static Remote lookup(String name) 注意:name以URL格式给出: rmi:/:/ (port默认1099) 启动注册库 start rmiregistry port 运行服务端主类,创建远程对象并向注册库注册该对象引用。 运行客户机。,12,RMI C/S应用举例,Client,Server,调用远程方法sayHello( ),返回结果:”Hello Client”,Step 1: 定义远程接口,HelloInterface.java,13,RMI C/S应用举例,Step 2:编写服务器类HelloImplementor,实现远程接口HelloInterface,14,RMI C/S应用举例,Step 3:生成stub和skeleton: rmic v1.2 testrmi. HelloImplementor,Step 4:编写一个主类HelloHelper,实例化服务器类HelloImplementor , 生成远程对象,并且向注册库命名注册远程对象,15,RMI C/S应用举例,Step 5:编写客户机类,调用远程对象上的方法,16,演示,start rmiregistry 运行注册库,17,远程方法中的参数传递,传递非远程对象 将对象传递给本地方法,传递的只是对象的引用。 将非远程对象传递给远程方法,传递的只是对象的拷贝,非远程客户信息对象,Client,Server,Customer,调用远程方法find,参数Customer对象,返回结果,比较客户端非远程对象信息在远程方法调用前后是否一样,18,远程方法中的非远程对象传递,19,远程方法中的非远程对象传递,20,远程方法中的非远程对象传递,21,演示,22,远程方法中的参数传递,传递远程对象 将远程对象传递给远程方法,那么远程方法接收到的是一个存根对象.,collage,student,Server,Client,调用远程方法add,传递远程对象student,返回结果,Stub对象,23,远程方法中远程对象传递,24,远程方法中远程对象传递,25,远程方法中远程对象传递,26,演示,27,RMI与CORBA,与RMI不同,CORBA允许Java对象与其他语言编写的对象之间进行相互调用。其依赖于客户端与服务器端同时具有对象对象请求代理(ORB). 使用IDL描述接口.,28,总结,理解本地计算与分布式计算 分布计算角色与机制 远程方法调用(Remote Method Invocation)RMI 配置远程方法调用 远程方法中的参数传递 RMI与CORBA区别,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!