- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
应用POA策略 暂态对象 与持久对象不同,暂态对象不需要对定位和激活有效的支持。这样持久它们就非常适合于处理短期的或局部的活动。 策略值不是TRANSIENT的POA还有几种有意义的用途,他不同于Root POA。 (1)因为Root POA的ThreadPolicy的值为ORB_CTRL_MODEL,所以一个应用程序想让它的暂态对象所做的所有请求顺序调度的话,需要一个具有SINGLE_THREADMODEL值的POA。 (2)一个应用程序可以要求一个拥有暂态对象的POA,它的IdAssignmentPolicy值为USE_ID而不是Root POA所具有的SYSTEM_ID。 (3) 它可以用于策略值不是UNIQUE_ID和RETAIN的拥有暂态对象的OA。 对象生命周期 对象生命周期处理以下的问题 (1) 对象的持久 (2) 对象的析构 (3) 对象的拷贝 (4) 对象的移动 生命周期服务主要是一系列建议而非实现规范。 12.3 对象工厂 OMG生命周期规范建议CORBA应用程序使用工厂模型来创建对象。一个工厂是一个提供一种和多种操作来创建其它对象的CORBA对象。为了创建一个新的对象,客户程序调用工厂中的一个操作;操作的实现创建了一个新的CORBA对象并向客户返回新对象的一个引用。在分布式系统中,工厂操作扮演着C++中构造函数的角色。差别是:工厂操作可以在一个可能的远程地址空间创建一个CORBA对象,而C++构造函数总是在本地地址空间创建一个C++对象。还有,可对一个已经存在的对象调用工厂操作。但只能对一个还没有存在的对象调用构造函数。 工厂的设计选项 (1) 组合式工厂-使用单个的工厂来创建两种类型的设备。 (2) 组合的汇集和工厂-它是上面的变体,该选择方案是将工厂操作添加到控制接口,而不是使用一个独立的工厂对象。 (3) 纯汇集和工厂-工厂负责创建对象,控制器只是一个这些设备的引用的汇集。 (4) 成批工厂-定义一个操作,此操作完成成批对象的创建。 12.4 撤消、拷贝以及移动对象 撤消一个对象,客户程序可以调用remove操作。客户程序调用此函数后,该设备就永久的消失了。 对象的拷贝可以使用copy函数,copy函数的目的是客户程序可以调用一个对象以获得一个指向新对象的引用,这个新对象在某些方面是原始对象的一个拷贝。 移动一个对象可以使用move操作。Move操作的目的是在物理上将一个对象从一个位置移动到另一个位置而不让指向移动的对象的引用失效。 12.5 伺服程序的无用存储单元回收 无用单元回收是由一个程序实现的不再使用的资源的自动删除。 (1) 客户程序意外行为的处理--remove或destory (2) 通过关机进行无用单元的回收 (3) 使用回收模型进行无用单元回收 (4)使用超时进行无用单元回收 显式保持激活 通过向每个接口添加一个ping操作,可以让客户机负责保持伺服程序的激活。默认情况下,在一定的空闲周期后,伺服程序将作为无用存储单元回收。 每个对象逆向保持激活 如果从服务器到客户机的ping操作失败,服务器程序就收回相对应的伺服程序。 可移植对象适配器 11.2 简介 POA技术提供地最基本地服务是:对象创建、伺服程序注册以及请求地调调度。POA提供了一整套特性和服务,可以利用它来编写可扩缩的、高性能的服务器应用程序,它在合理控制资源请求方面起着重要的作用。 11.3 POA基本原理 在一个服务器应用程序中,POA负责创建对象、激活对象以及将对各个对象的请求调度到它们各自的伺服程序上,通过POA,CORBA对象完成了编程语言所提供的伺服程序的相互对应关系。 当一个对象处于激活状态时,该对象就可以接收并执行请求。当对象得到一个请求后,该对象必须由伺服程序进行具体化,或给它以具体形式。一个给定对象仅由一个单个的伺服程序在给定点及时进行具体化,但超时以后,可以创建许多伺服程序实例来具体化一个CORBA对象。最后每一个伺服程序释放后就结束了它与相对应的CORBA对象之间的连接。 具体化和释放是应用于伺服程序的,创建和撤消是应用于CORBA对象的。 11.3.1 基本的请求调度 基本调度如下: (1) 首先,服务器应用程序以某种方式为CORBA对象到处一个对象引用。客户机可能通过命名服务或者交易服务或者从另一个请求接收它来获得到处对象引用。对象引用从逻辑上“指向”目标CORBA对象,像C++指针指向它底层的C++对象一样。 (2) 其次,在应用程序的控制下,客户程序ORB使用对象引用来决定对象驻留在何处和如何访问它,然后它向服务器ORB发送请求。 (3) 再次,服务器ORB接收请求并将其调度给拥有该目标对象的POA。 (4) 最
原创力文档


文档评论(0)