计算机仿真技术 教学课件 ppt 作者 郝培锋 崔建江 潘峰 第6章

上传人:E**** 文档编号:89192886 上传时间:2019-05-21 格式:PPT 页数:87 大小:4.80MB
返回 下载 相关 举报
计算机仿真技术 教学课件 ppt 作者  郝培锋 崔建江 潘峰 第6章_第1页
第1页 / 共87页
计算机仿真技术 教学课件 ppt 作者  郝培锋 崔建江 潘峰 第6章_第2页
第2页 / 共87页
计算机仿真技术 教学课件 ppt 作者  郝培锋 崔建江 潘峰 第6章_第3页
第3页 / 共87页
计算机仿真技术 教学课件 ppt 作者  郝培锋 崔建江 潘峰 第6章_第4页
第4页 / 共87页
计算机仿真技术 教学课件 ppt 作者  郝培锋 崔建江 潘峰 第6章_第5页
第5页 / 共87页
点击查看更多>>
资源描述

《计算机仿真技术 教学课件 ppt 作者 郝培锋 崔建江 潘峰 第6章》由会员分享,可在线阅读,更多相关《计算机仿真技术 教学课件 ppt 作者 郝培锋 崔建江 潘峰 第6章(87页珍藏版)》请在金锄头文库上搜索。

1、第6章,6.1 分布式交互仿真体系结构的发展 6.2 高层体系简介 6.3 HLA规则 6.4 HLA对象模型模板 6.5 联邦运行支撑环境 6.6 HLA接口规范 6.7 小结,6.1 分布式交互仿真体系结构的发展,6.1.1 分布交互仿真技术 6.1.2 聚合级仿真协议 6.1.3 高层体系结构的由来 6.1.4 DIS、ALSP和HLA的比较,6.1 消息传递与分布式对象的比较,消息传递范型模拟了人际间的通信模式,因此,对于分布式计算来说,是一种比较自然的模型.在有些网络服务中,进程间要通过消息交换来进行交互,对于这些网络服务来说,它是一种非常适合的范型.由于下述原因,该范型所提供的抽象

2、可能无法满足某些复杂网络应用的需求: (1)基本消息传递要求参与进程是紧耦合的.交互过程中,进程之间必须直接通信.如果进程之间的通信消息丢失(由于通信链路,系统或某个进程的失败),协作将失败. (2)消息传递范型是面向数据的范型.每个消息都包含按相互交互约定的某种格式封装的数据,并根据协议解释成请求或应答.没接收到一条消息,都会出发接收进程的一个动作. 面向数据范性适用于网络服务和简单网络应用,但不适合包含大量混合请求和应答的复杂应用.在这类应用中,消息解释任务的工作量会相当大.,分布式对象范型是在消息传递之上提供抽象的一种范型.从它的名称中可以看出,该范型基于分布式系统中存在的对象.在Jav

3、a等面向对象编程语言支持的面向对象程序中,对象通常表示对应用非常重要的实体.每个对象都封装了以下的信息: (1)实体状态或数据在Java中,这些数据包含在每个对象的实例变量中. (2)实体操作,通过实体操作可访问或更新实体状态.在Java中,操作即为方法.,尽管我们已在前几章使用了DatagramMessage等对象,但它们都是本地对象,而不是分布式对象.本地对象指对象方法只能被本地进程调用的对象,本地进程指运行在对象所在计算机上的对象.分布式对象指其方法可被远程进程调用的对象,远程进程指远行在通过网络与对象所在主机互连的计算机上的进程. 在分布式对象范型中,用分布式对象表示网络资源.为从网络

4、资源请求服务,进程调用对象的某个方法或操作,将数据作为方法参数传递.随后该方法在远程主机上执行,并将结果作为返回值送给请求进程. 与消息传递范型相比,分布式对象范型是面向动作范型:范型的核心是操作调用,而传递的数据承担辅助角色(作为参数和返回值).分布式对象范型对我们人类来说不是太直观,但对于面向对象的软件开发来说,却是非常自然的.,图7.1示出了分布式对象范型.远行在主机A上的进程向驻留于主机B上的分布式对象方法发出方法调用,如果需要传递数据,将作为参数随调用传递.该方法调用由主机B上的方法执行的动作.如果存在返回值,也从主机B传送到主机A.使用分布式对象的进程称为该对象的客户进程.(相对于

5、该客户的本地方法或本地对象的方法来说,)该对象的方法称为客户进程的远程方法.,图7.1 分布式对象范型,基本分布式对象体系,分布式对象系统的基本假设是最小化远程方法调用和本地方法调用之间的编程差异,进而允许在应用程序中,使用与本地方法调用类似的语法来调用远程方法.事实上,两者是存在一定区别的.因为远程方法调用涉及到两个独立进程之间的通信,因此需要解决数据封装,事件同步等关键问题.这些差异被封装在体系结构中. 图7.2描述了支持分布式对象范型的基本体系结构. 一个分布式对象由某一进程提供或输出.这里称该进程为对象服务器.必须在系统中为分布式对象注册提供一种设施,这里称为对象注册器,或简称注册器.

6、,图7.2 基本分布式对象系统,为了访问某一分布式对象,对象客户进程从注册器中查询该对象的引用.这一引用被对象客户用来调用该远程对象的各种方法,或称远程方法. 从逻辑上来看,对象客户是直接调用远程方法的.但实际上,这种调用是由一个称为客户代理的软件构件来处理的,该代理通过与客户主机上的软件交互,提供分布式对象系统的运行时支持. 该运行时支持负责向远程主机传送方法调用所需的进程间通信,包括封装需要传输给远程对象的参数数据. 服务器端也需要类似体系结构,其中分布式对象系统的运行时支持处理消息接收和数据解封,并将调用转发到称为服务器代理的软件构件.服务器代理通过与分布式对象交互,在本地调用方法,并将

7、解封数据作为参数传入. 该方法调用触发服务器主机上某些任务的执行.方法的执行结果(包括封装后的返回值数据),被服务器代理通过双方的运行时支持和网络支持,转发个客户代理.,6.1.3 分布式对象系统,分布式对象范型已在分布式应用中广泛应用,并提供了大量基于该范型的工具集.大家最熟悉的工具集包括: (1)Java RMI(远程方法调用); (2)基于CORBA(公共对象请求代理)的系统; (3)DCOM(分布式组件对象模型); (4)支持SOAP(简单对象访问协议)的工具集和API. 这里很难完整地介绍已有的全部分布式对象设施,而且可以肯定地说,一些支持该范型的工具集正在不断涌现.但是,熟悉Jav

8、a RMI API后,可以为学习类似设施的细节提供必要的基础和预备知识. 下面,我们将介绍JAVA RMI API(远程方法调用).,远程过程调用,RMI源于远程过程调用范型(RPC). 过程式程序设计的出现早于面向对象编程.在过程式程序设计中,过程或函数是为动作提供抽象的控制结构.函数操作通过函数调用实现.为支持可变性,函数调用可通过数据列表(即参数调用)来完成.每个参数的值或引用被传递给函数,并可以终止函数发起的动作.传统的过程调用指调用与调用者处于同一系统的过程,因此过程调用也称本地过程调用. 在远程过程调用模型中,过程调用由一个进程向另一进程发出,被调用进程可驻留于远程系统,其中的数据

9、作为参数传递.进程接收到调用后,执行该过程中的动作,调用者在调用结束时被通告,如果存在返回值,则该值将从被调用者传递到调用者.图7.3示出了RPC范型.,图7.3 远程过程调用范型,目前,已经出现了一些基于RPC模型的应用程序编程接口.这些API采用与本地进程调用类似的语法和语义提供远程过程调用.为隐藏进程间通信细节,每个远程进程调用都要通过工具rpcgen交换,将本地过程调用转换到一个常称为stub(或更为正式地,称之为proxy)的软件模块,代表该过程调用及其参数的消息通过代理传送到远程机器. 在另一方,代理接收到消息并将之转换成与远程过程相对应的本地过程调用.图7.4示出了将远程过程调用

10、转换成本地过程调用,以及交互消息传递的实际情况. 注意,双方都使用代理来提供进程间通信所需的运行时支持,完成必要的数据封装和socket调用.,远程过程调用模型从20世纪80年代初出现以来,已在网络应用中得到了广泛的使用.有两种针对该范型的主流API:一种是开放网络计算远程调用,该API由20世纪80年代早期Sun Microsystems的RPC API演变而来;另一种为大家所熟知的API是开放小组分布式计算环境DCE.这两种API都提供了工具rpcgen,用于将远程过程调用转换成到stub的本地过程调用. 尽管RPC有其重要的历史意义,但这里不打算具体介绍他,原因有二: (1)从RPC的名

11、称中就可以看出,它是面向过程的方法调用机制.RPC API使用过程或函数调用语法.因此更适合于使用过程语言(如C)编写的程序,但不适合使用Java编写的程序.Java是本书中采用的一种面向对象语言. (2)为取代RPC, Java提供了远程方法调用API,该API是面向对象的,并且其调用语法比RPC更简单.,远程方法调用,RMI是RPC模型的面向对象实现.该API只适用于Java程序,但该API相对简单,因此非常适合于用作学习网络应用中分布式对象技术的入门资料. 使用RMI,对象服务器通过目录服务导出和注册远程对象.对象提供远程方法,这些方法可以被客户程序调用. 从语法上来看,通过远程接口声明

12、远程对象,该接口是Java接口的扩展.远程接口由对象服务器实现.对象客户使用与本地方法调用类似的语法调用远程对象方法,从而访问远程对象. 本章后文将具体探讨Java RMI API.,Java RMI体系结构,图7.5解释了Java RMI API的体系结构.与RPC API类似,在Java RMI体系结构中,为了将远程方法调用转换本地方法调用,也要求代理软件模块提供相应的运行时支持,并处理底层进程间通信细节.在该体系结构中,客户及服务器都提供了三层抽象.接下来,我们将分别介绍双方的体系结构.,图7.5 Java RMI体系,客户端体系结构 stub层:客户进程的远程方法调用被传递到代理对象,

13、即大家所熟知的stub. stub层位于应用层之下,负责解释客户程序发出的远程方法调用;然后将其转发到下一层(即远程引用层). 远程引用层解释和管理客户发出的到远程服务对象的引用,并向下一层即传输曾发起IPC操作,从而将方法调用传送给远程主机. 传输层是基于TCP协议的,因此是面向连接的.该层和网络体系结构中的其他部分一起,共同执行IPC,以将表示方法调用的数据传输给远程主机.,服务端体系结构 从概念上讲,服务器端也包括三层抽象,但具体实现随Java版本的不同而变化. skeleton层位于应用层之下,负责与客户端stub层交互.我们再来看一段引自java. sun. com/products

14、的说明: “skeleton与stub进行对话,它从链路上读取方法调用参数,向远程服务实现对象发起调用,接受返回值,然后将返回值写回到stub.” 远程引用层该层管理源于客户端的远程引用,并将其转换成能被skeleton层理解的本地引用. 传输层与客户端体系结构一样,该层是面向对象连接的传输层,即为TCP/IP网络体系中的TCP.,对象注册 通过RMI API,可以利用若干种目录服务来注册分布式对象.JNDI (Java名字和目录)就是一种这样的目录服务,它比本章要使用的RMI注册更通用,因为可将其用于未使用RMI API的应用中.RMI注册表rmiregistry,是Java SDK提供的一

15、种简单目录服务.RMI注册表是一种服务,该服务的服务器活动时,运行于对象服务器的宿主计算机上,默认情况下,在TCP端口1099上. 从逻辑上来说,在软件开发者看来,客户程序发出的远程方法调用是直接与服务器程序中的远程对象交互的,这与本地方法调用与本地对象的交互方式是相同的.从物理上来看,远程方法调用在运行时被转换成对stub和skeleton的调用,进而导致通过网络脸路进行数据传输.图7.6描述了stub和skeleton之间交互的时间-事件状态图.,图7.6 RMI stub与RMI skeleton之间的交互,Java RMI API,本节将介绍部分Java RMI API(为简单起见,本

16、章描述不包括安全管理,但强烈建议在所有RMI应用中都使用安全管理.安全管理将在下一章的8.3节介绍).这里将包括三方面内容:远程接口,服务器端软件和客户端软件.,远程接口 在RMI API 中,分布式对象的创建开始于远程接口.Java接口是为其他类提供模板的一种类:他包括方法声明或签名,其实现由实现该接口的类提供. Java远程接口是继承Java类remote的接口,该类允许使用RMI语法实现接口.与必须为每个方法签名定义远程扩展和RemoteException不同,远程接口语法与常规或本地Java接口相同.图7.7示出了远程接口基本语法的一个示例.,/file: SomeInterface. java /to be implemented by a remote object import java. rmi.*; public interface SomeInterface extends Remote /signature of first remote method public String someMethed1() throws java.rmi.remo

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


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

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