- 1、本文档共43页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第十二章基于对象的分布式系统122CORBACORBA的通信
第十二章 分布式共享存储器 12.1 分布式对象 对象的概念 对象是一个抽象体,它将相关的服务和数据封装在一起。对象服务以函数的形式提供,是对数据进行的操作,被称为对象的方法(method)。对象里的数据也被称为状态(state)。 12.1 分布式对象 对象的概念 对象的抽象定义通常被称为类,而实际的一个实例被称为对象。 此外,对象之间可以通过继承部分地共享实现细节。 通过对象的接口调用对象的方法,从而可对对象的状态进行访问或操作,除此之外,无任何对对象的状态进行访问和操作的合法手段。一个对象可以实现多个接口;同样,给定一个接口的定义,多个对象可能对这一定义提供实现。接口和对象对接口的实现是独立的。 在一个机器上设置一个接口,而对象本身驻留在另一个机器上,这通常被称为分布式对象。下图是分布式对象的一般组织方式。 12.1 分布式对象 对象的概念 12.1 分布式对象 对象的类型 编译时对象和运行时对象。 1)编译时对象(compile-time object)。在这种情况下,一个对象是程序所定义的类(class)的一个实例,一个类是一个模块的抽象描述,这个模块由一组数据元素和对这些数据的一组操作组成)。 2)另外一种对象是在运行时通过明确的方式构建的,称为运行时对象(runtime object)。由于运行时对象不依赖于分布式应用程序是使用什么语言编写的,所以这种方法在许多基于对象的分布式系统中得到采用。特别是,一个应用程序可以使用由多种语言编写的对象来实现。 12.1 分布式对象 对象的类型 持久性对象和暂时性对象 : 一个持久性对象是一个持续存在的对象,即使是在当前它并不包含在一个服务员进程的地址空间中,它仍然是存在的。也就是说,一个持久性对象并不依赖于它当前的服务员。在实际中,这就意味着当前管理这个持久对象的服务员可以将这个对象的状态保存在磁盘中,然后退出。随后,一个新启动的服务员能够从磁盘中将这个对象的状态读取到自己的地址空间中去,然后处理调用请求。 相反,一个暂时性对象只能随管理它的那个服务员的存在而存在。一旦服务员退出,对象也就随之消失了。 12.2 CORBA CORBA的总体结构 CORBA是Common Object Request Broker Architecture 的简称,即通用对象请求代理结构。严格地说,CORBA并不是一个系统,而是一个规范。 CORBA系统由四组构造元素组成,这四组构造元素由一个叫做ORB(Object Request Broker)的机构连接。 ORB是任何一个CORBA分布式系统的核心,它负责在对象和其顾客之间建立通信,并将分布和异构性的问题隐藏起来。在许多系统中,ORB是以库函数的形式实现的,由顾客程序和服务员程序连接,提供基本的通信服务。在许多系统中,ORB是以库函数的形式实现的,由顾客程序和服务员程序连接,提供基本的通信服务。 12.2 CORBA CORBA的总体结构 12.2 CORBA CORBA的对象模型 CORBA使用远程对象模型,在这种模型中,CORBA对象只驻留在一个服务员的地址空间中。 在CORBA中,使用CORBA的接口定义语言IDL(Interface Definition Language)对对象和服务进行说明。CORBA IDL和其他的接口定义语言类似,在这种语言中,它提供了精确的语法用于表达方法和参数。 接口说明可以只用IDL语言给出,但是在CORBA中,必须提供一个严格的规则用于将IDL描述的接口说明转换成所使用的程序设计语言。 12.2 CORBA CORBA的对象模型 12.2 CORBA CORBA的对象模型 CORBA系统的一般组织方式。 顾客静态代理:一个顾客应用程序有一个Proxy代理,Proxy代理将调用请求打包传送给服务员,并且将来自服务员的响应进行拆包传送给顾客程序。需要注意的是,Proxy和ORB之间的接口不必是标准化的,因为CORBA假定所有的接口都是由IDL描述的,CORBA为用户提供了一个IDL编译器,这个编译器能够生成必要的代码用于处理顾客和服务员的ORB之间的通信 12.2 CORBA CORBA的对象模型 CORBA系统的一般组织方式。 动态调用接口DII:在某些情况下,静态定义的接口对顾客来说是不适用的,相反顾客需要在运行时期间确定一个特定对象的接口是什么样的,然后构建一个对该对象的调用请求。为此目的,CORBA为顾客提供了一个动态调用
文档评论(0)