第十二章基于对象的分布式系统

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第十二章基于对象的分布式系统12.1分布式对象对象的概念对象是一个抽象体,它将相关的服务和数据封装在一起。对象服务以函数的形式提供,是对数据进行的操作,被称为对象的方法(method)。对象里的数据也被称为状态(state)。数据方法第十二章基于对象的分布式系统12.1分布式对象对象的概念对象的接口和对象对接口的实现:通过对象的接口调用对象的方法,从而可对对象的状态进行访问或操作,除此之外,无任何对对象的状态进行访问和操作的合法手段。一个对象可以实现多个接口;同样,给定一个接口的定义,多个对象可能对这一定义提供实现。接口和对象对接口的实现是独立的。分布式对象:在一个机器上设置一个接口,而对象本身驻留在另一个机器上,这通常被称为分布式对象。第十二章基于对象的分布式系统12.1分布式对象对象的概念顾客OS服务员OSProxySkeleton顾客程序服务员程序顾客机服务员机顾客调用一个方法同对象相同的接口Skeleton调用同一个方法对象状态方法接口打包的请求通过网络传送网络第十二章基于对象的分布式系统12.1分布式对象对象的类型编译时对象和运行时对象:1)编译时对象(compile-timeobject)。在这种情况下,一个对象是程序所定义的类(class)的一个实例,一个类是一个模块的抽象描述,这个模块由一组数据元素和对这些数据的一组操作组成;2)另外一种对象是在运行时通过明确的方式构建的,称为运行时对象(runtimeobject)。由于运行时对象不依赖于分布式应用程序是使用什么语言编写的,所以这种方法在许多基于对象的分布式系统中得到采用。特别是,一个应用程序可以使用由多种语言编写的对象来实现。第十二章基于对象的分布式系统12.1分布式对象对象的类型运行时对象的实现•通常的方法是使用一个对象适配器(objectadapter),它的主要作用是将用户编写的程序包装成具有对象的外观。对象适配器允许将一个接口转变成顾客所希望的形式和功能。例如一个适配器可以将上面所描述C库函数动态地和一个对象结合(bind)并打开一个对应的文件作为该对象的当前状态。•对象适配器在基于对象的分布式系统中具有重要的作用。为了使包装尽量容易,一个对象由它所实现的接口进行定义。实现的接口在适配器中进行注册,然后这个接口对远程请求来说就是可用的。适配器监视着所发出的对对象的调用请求,给顾客提供一个远程对象的映像。第十二章基于对象的分布式系统12.1分布式对象对象的类型持久性对象和暂时性对象:•一个持久性对象是一个持续存在的对象,即使是在当前它并不包含在一个服务员进程的地址空间中,它仍然是存在的。也就是说,一个持久性对象并不依赖于它当前的服务员。在实际中,这就意味着当前管理这个持久对象的服务员可以将这个对象的状态保存在磁盘中,然后退出。随后,一个新启动的服务员能够从磁盘中将这个对象的状态读取到自己的地址空间中去,然后处理调用请求。•相反,一个暂时性对象只能随管理它的那个服务员的存在而存在。一旦服务员退出,对象也就随之消失了。第十二章基于对象的分布式系统12.2CORBACORBA是CommonObjectRequestBrokerArchitecture的简称,即通用对象请求代理结构。CORBA的总体结构CORBA系统由四组构造元素组成,这四组构造元素由一个叫做ORB(ObjectRequestBroker)的机构连接。1)ORB是任何一个CORBA分布式系统的核心,它负责在对象和其顾客之间建立通信,并将分布和异构性的问题隐藏起来。在许多系统中,ORB是以库函数的形式实现的,由顾客程序和服务员程序连接,提供基本的通信服务。第十二章基于对象的分布式系统12.2CORBACORBA的总体结构2)应用对象是作为应用程序的一部分而建立的。3)除此之外,CORBA还提供了一些设备,这些设备用于构建CORBA服务。参考模型对两类CORBA设备进行了区分,它们被分成两组,一组为水平设备,另一组为垂直设备。水平设备由通用的高层服务组成,这些高层服务和特定的应用领域无关。这些服务当前包括为用户接口提供的服务、为信息管理提供的服务、为任务管理(用于定义工作流系统)提供的服务等。4)垂直设备由那些为特定的应用领域而提供的高层服务组成,例如电子商务、银行、制造业等。5)第四组构造元素是普通的对象服务。第十二章基于对象的分布式系统12.2CORBACORBA的总体结构应用程序对象垂直设备(特定领域)水平设备(通用目的)普通对象服务ObjectRequestBroker(ORB)第十二章基于对象的分布式系统12.2CORBACORBA的对象模型CORBA使用远程对象模型,在这种模型中,CORBA对象只驻留在一个服务员的地址空间中。在CORBA中,使用CORBA的接口定义语言IDL(InterfaceDefinitionLanguage)对对象和服务进行说明。CORBAIDL和其他的接口定义语言类似,在这种语言中,它提供了精确的语法用于表达方法和参数。接口说明可以只用IDL语言给出,但是在CORBA中,必须提供一个严格的规则用于将IDL描述的接口说明转换成所使用的程序设计语言。第十二章基于对象的分布式系统12.2CORBACORBA的对象模型CORBA系统的一般组织方式:本地OS动态请求接口DII顾客机服务员机顾客应用程序静态IDL代理ProxyORB接口顾客ORB对象实现动态代理接口代理Skeleton对象适配器ORB接口本地OS服务员ORB网络第十二章基于对象的分布式系统12.2CORBACORBA的对象模型CORBA系统的一般组织方式:ORB:ORB是一个运行时系统,负责处理顾客和对象之间的基本通信问题,这些通信保证请求被传送给对象的服务员和应答返回给顾客。ORB本身只提供少量的服务:1)处理对象引用(objectreference),对象引用一般来说依赖于特定的ORB。2)ORB提供对对象引用的打包和拆包操作,使得进程之间能够交换信息,同时还提供引用之间的比较操作。3)ORB所提供的其他操作还包括为一个服务找到对应的进程,这需要用到名字服务。第十二章基于对象的分布式系统12.2CORBACORBA的对象模型CORBA系统的一般组织方式:顾客静态代理:一个顾客应用程序有一个Proxy代理,Proxy代理将调用请求打包传送给服务员,并且将来自服务员的响应进行拆包传送给顾客程序。需要注意的是,Proxy和ORB之间的接口不必是标准化的,因为CORBA假定所有的接口都是由IDL描述的,CORBA为用户提供了一个IDL编译器,这个编译器能够生成必要的代码用于处理顾客和服务员的ORB之间的通信。第十二章基于对象的分布式系统12.2CORBACORBA的对象模型CORBA系统的一般组织方式:动态调用接口DII:在某些情况下,静态定义的接口对顾客来说是不适用的,相反顾客需要在运行时期间确定一个特定对象的接口是什么样的,然后构建一个对该对象的调用请求。为此目的,CORBA为顾客提供了一个动态调用接口DII(DynamicInvocationInterface)。DII提供了一个通用的调用操作,该操作从顾客那里得到一个对象引用、一个方法标识符、一些作为参数的输入值和一些由调用者给出的变量用于存放返回的结果。第十二章基于对象的分布式系统12.2CORBACORBA的对象模型CORBA系统的一般组织方式:服务员方的构件:在服务员方,CORBA提供了一个对象适配器(objectadapter),它负责将收到的请求转发给正确的对象。实际的拆包操作由CORBA中的服务员方的代理Skeleton负责处理。同顾客方的代理一样,服务员方的代理可以是静态的,也可以是动态的。静态的代理由IDL所定义的说明编译得到。当使用动态的通用代理,对象必须实现一个调用函数。第十二章基于对象的分布式系统12.2CORBA接口库和实现库1)CORBA提供了一个接口库,里面保存所有接口定义,允许对调用请求的动态解释。在许多CORBA系统中,有一个独立的进程提供了一个标准的接口用于向接口库保存和检索接口定义。当一个接口定义被编译的时候,IDL编译器会赋予这个接口一个库标识符,这个标识符是从库中检索一个接口定义的基本手段。2)一个实现库中包含了所有需要实现和激活的对象。对象适配器负责激活一个对象,保证对象能够在一个服务员的地址空间中运行,从而使得对象的方法能够被调用。对一个给定的对象引用,适配器能够与实现库联系从而准确地找到一个对象的实现。例如,实现库应该维持一张表,该表记录了哪一个服务员需要启动,服务员需要为特定的对象监听哪一个端口号。实现库还要提供服务员需要装载和执行哪一个可执行文件等信息。第十二章基于对象的分布式系统12.2CORBACORBA的服务CORBA的服务服务功能描述收集对象被分组聚集到一个链表中、一个队列中、一个堆栈中或一个集合中查询提供了一种手段构建对象组,使对象可以使用一种申明的方式进行查询并发允许对共享对象进行并发访问事务处理允许顾客在一个事务处理中访问多个对象,支持平面的和嵌套的事务处理事件通过事件支持异步通信通告提供一个高级设备支持基于事件的异步通信外观化处理对对象打包或拆包,使得对象可以被存储在磁盘上或者通过网络发送。生存周期支持创建、删除、拷贝、和移动对象许可允许对象的开发者将一个许可附加到一个对象命名提供对象名字到对象标识符之间的映射性质使用一些(参数,值)对来对对象的性质进行描述交易提供一些关于该对象的一些广告信息持久性支持对象的持久性存储关系表达对象之间的关系安全性提供诸如认证、权限、安全通信和管理时间在一定的误差范围内提供当前的时间第十二章基于对象的分布式系统12.2CORBACORBA的通信对象调用模型CORBA支持的三种不同请求模型请求模型失效语义功能描述同步最多一次调用者阻塞直到收到响应或者出现异常单程尽力传输调用者立即继续执行不等待服务员的响应延期同步最多一次调用者立即继续执行,在以后某个时刻阻塞等待响应第十二章基于对象的分布式系统12.2CORBACORBA的通信事件和通告服务CORBA定义了一个事件服务,用于提供基于事件的通信。事件由供应者产生,由消费者接收,事件通过事件通道传输。事件通信的推送模型消费者消费者事件通道供应者供应者供应者把事件推送给消费者第十二章基于对象的分布式系统12.2CORBACORBA的通信事件和通告服务CORBA定义了一个事件服务,用于提供基于事件的通信。事件由供应者产生,由消费者接收,事件通过事件通道传输。事件通信的拉取模型消费者消费者事件通道供应者供应者供应者询问供应者是否有新事件第十二章基于对象的分布式系统12.2CORBACORBA的通信事件和通告服务CORBA的事件服务存在如下缺点:第一,为了传播事件,供应者和消费者必须都连接到事件通道上。如果消费者是在一个事件已经产生之后才连接到事件通道上的,那么这个事件就会丢失。也就是说,CORBA的事件服务不支持持久性事件。第二,消费者无法对事件进行过滤,每个事件被传递给全部的消费者。如果要区分不同的事件类型,需要给每一类事件独立地设立一个事件通道。CORBA在通告(notification)服务中增加了过滤能力,在这种服务中,如果没有消费者对某个特定的事件感兴趣,则这个事件不会传播。第三,事件的传播是不可靠的。第十二章基于对象的分布式系统12.2CORBACORBA的通信报文队列CORBA的支持持久性通信的模型称为报文排队(message-queuing)模型,CORBA使用了一个附加的报文服务(messagingservice)来支持这种通信模型。在报文服务的情况下,有两种附加的异步的方法请求方式,一种是回叫(callback)模式,另一种是收集(polling)模式。为了支持持久性通信,ORB的底层通信系统应该能够保存报文,直至它们被接收为止。第十二章基于对象的分布式系统12.2CORBACORBA的通信报文队列顾客程

1 / 50
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功