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

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

ID:12597352

大小:173.50 KB

页数:21页

时间:2018-07-18

第十二章基于对象的分布式系统_第1页
第十二章基于对象的分布式系统_第2页
第十二章基于对象的分布式系统_第3页
第十二章基于对象的分布式系统_第4页
第十二章基于对象的分布式系统_第5页
资源描述:

《第十二章基于对象的分布式系统》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、分布计算系统第十二章基于对象的分布式系统基于对象的技术已经用于许多非分布式应用程序的开发,是一种非常有价值的开发技术。对象的一个最重要的方面是,通过完善的接口对象可以将它的内部情况对外部世界隐藏起来。通过这种方式对象可以替换和改变,而它的接口可以保持不变。随着RPC逐渐成为分布式系统中处理通信的一个实际上的标准,人们也开始认识到RPC的原理同样也可以用到对象上。12.1分布式对象12.1.1对象的概念对象是一个抽象体,它将相关的服务和数据封装在一起。对象服务以函数的形式提供,是对数据进行的操作,被称为对象的方法(me

2、thod)。对象里的数据也被称为状态(state)。图12.1.1表示了一个对象。方法数据图12.1.1一个对象方法不能被独立地访问,访问方法必须通过对象,脱离了对象本身访问方法没有什么实际意义。但是一个顾客可以通过向一个对象发送请求而访问这个对象的方法,也就是说,一个顾客可以通过请求获得对象的服务,并从对象那里获得结果。一个特定对象的所有方法的集合构成了这个对象的行为(behavior)。例如,一个人的行为可以由如下“方法”构成的:行走、交谈、唱歌、思考、吃饭、喝水、睡觉、跑步、就坐、跳舞等等。在基于对象的系统中通

3、常允许对方法进行多重定义。这允许通过设置请求的参数要求对象的准确行为。如果多个方法实例被允许,则方法的实例通常被称为构造器(constructor)。使用同一个名字对方法进行多重定义通常也被称为方法重载(overloading)。基于对象的系统有多个对象实例,他们应该共享同一个实现。对象的抽象定义通常被称为类(class),而实际的一个实例被称为对象。此外对象之间可以通过继承(inheritance)部分地共享实现细节。继承允许使用现有的一类对象定义另外一类对象。当允许继承时,基于对象的系统(object-based

4、system)就称为面向对象的系统(object-orientedsystem)。通过对象的接口调用对象的方法,从而可对对象的状态进行访问或操作,除此之外,无任何对对象的状态进行访问和操作的合法手段。理解这一点是非常重要的。一个对象可以实现多个接口;同样,给定一个接口的定义,多个对象可能对这一定义提供实现。分布计算系统接口和对象对接口的实现是独立的,这一点对分布式系统来说是至关重要的。这种独立性可以让我们在一个机器上设置一个接口,而对象本身驻留在另一个机器上,这通常被称为分布式对象。图12.1.2是分布式对象的一般组

5、织方式。服务员机顾客机服务员程序顾客程序网络打包的请求通过网络传送接口方法状态对象Skeleton调用同一个方法同对象相同的接口顾客调用一个方法SkeletonProxy服务员OS顾客OS图12.1.2分布式对象的组织形式当一个顾客同一个远程对象连接时,一个被称为代理(proxy)的对象的接口被装入到顾客的地址空间。一个proxy类似于RPC的顾客代理(clientstub),它的功能是对顾客程序发出的调用打包成报文,以及对返回给顾客的报文拆包,得到方法调用的结果。实际的对象驻留在服务员机上,对象的接口形式和顾客方的

6、接口形式是相同的,到达服务员方的调用请求首先被传送到服务员程序的代理,服务员程序的代理在这里被称为skeleton,由它对请求进行拆包,通过接口请求对应的方法,对结果打包成应答报文,将应答报文传递给顾客方的代理。对于绝大多数分布式对象而言它的状态并不是分布式的,状态只驻留在一个机器上,只有对象的接口在其他的机器上是可用的,所以这样的对象也称为远程对象。对于通常的分布式对象而言,状态本身也可能是物理的分布在多个机器上,但是这种物理的分布通过对象的接口对顾客而言隐藏起来的。12.1.2对象的类型分布式系统中的对象可能以多

7、种形式出现。其中最多的一种形式是语言层的对象,这种对象直接由诸如JAVA,C++这样的面向对象的程序设计语言支持,这种对象称为编译时对象(compile-timeobject)。在这种情况下,一个对象是程序所定义的类(class)的一个实例,一个类是一个模块的抽象描述,这个模块由一组数据元素和对这些数据的一组操作组成[MEYER,1997]。在分布式系统中使用编译时对象经常使得一个分布式应用程序的建立变得很容易。例如,在JAVA中,一个对象可以完全通过它的类和类所实现的接口来定义。编译所定义的类所产生的代码可以产生类

8、的实例,接口可以编译成顾客代理和服务员代理,这样就可以在一个远程机上对一个对象进行调用。编译时对象的一个明显的缺点是它依赖于特定的程序设计语言。另外一种对象是在运行时通过明确的方式构建的,成为运行时对象(runtime分布计算系统object)。由于运行时对象不依赖于分布式应用程序是使用什么语言编写的,所以这种方法在许多基于对象的分布式系统中得

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。