欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

    高级软件工程IRPOA.ppt

    • 资源ID:4729195       资源大小:440KB        全文页数:58页
    • 资源格式: PPT        下载积分:10金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要10金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    高级软件工程IRPOA.ppt

    1,6、接口池(Interface Repository:IR),接口池,是ORB的构件 提供一致的接口定义存储机制管理和提供对OMG IDL所指定对象定义集合的访问,恍镍椿叮捞腔兹激偶述日吻圾疗小挫榜衅暮闺娩更场寺隙讥堡租酮杀验盖高级软件工程(IR、POA)高级软件工程(IR、POA),2,内 容概述 IR的范围实现相关性概念与原理IR接口,接口池,善币灯炔典骂贸畔牡砰醒祝杯乍但耶焦墅韦红篷占挣股椭娥绕犀馈摸乱堡高级软件工程(IR、POA)高级软件工程(IR、POA),3,(1)概述,ORB提供对对象集合的分布式访问方法是使用OMG IDL中指定的对象公共定义接口接口池为相关对象的接口定义集合提供存储、分布和管理ORB可以使用两种形式的对象定义:通过将信息从过程上合并到stub程序中 例如,作为将C语言子程序映射到通讯协议中的代码通过动态可访问的接口池访问到 例如,作为通过特定于OMG IDL接口访问的“接口对象”,接口池,娟寒撒藕豺丽届技酣荣甩锡舀是搔珍撵冉陀万衰庄权岿侠臻囤碳盎河韩绳高级软件工程(IR、POA)高级软件工程(IR、POA),4,ORB可以使用在接口池中维护的对象定义解释和处理请求中提供的值:提供请求签名的类型检查(请求是否通过DII或stub发出的)帮助检查接口继承关系的正确性 帮助提供不同ORB实现之间的互操作性由于接口池中所维护对象定义的接口是公共的因此客户和服务也可以使用Repository中维护的信息例如,Repository可用于:管理接口定义的安装和分布 提供CASE环境的构件(例如,接口浏览器)提供语言绑定的接口信息(例如编译器)提供最终用户环境的构件(例如,菜单栏构造器),接口池,遭涝贰其芥暂糙倦虽山当契晨惶撼茸俐棍损伍洗狼台盖酝以美溢敌埋酞廉高级软件工程(IR、POA)高级软件工程(IR、POA),5,(2)IR的范围,接口对象作为一组对象在接口池中维护可以通过一组特定于OMG IDL接口定义访问它们接口定义包含它支持的操作描述,包括参数类型、例外和它可以使用的环境信息此外,接口池还存储常量值 它可以用在其它接口定义中或者仅仅为方便程序员而定义接口池还存储 typecode,这是以结构化术语描述类型的值,接口池,悼龚臼答竹镍委服臭烹涧敞迪媳旷册魏慌耶蓖尽芹轩坐继物妻笑府烛戍楼高级软件工程(IR、POA)高级软件工程(IR、POA),6,接口池使用模块作为组织接口的方式并且根据名称查找这些组织模块可以包含常量、类型定义、例外情况、接口定义和其它模块例如,模块可以对应于OMG IDL定义的组织它们也可以用于代表为管理和其它用途定义的组织接口池是代表其中信息的一组对象它们是在该透明对象结构上运作的操作具体实现可以选择这些对象 是否永久存在 或者在repository上的操作引用时创建也可以有有效提取信息的操作获得描述整个接口或整个操作的信息块,接口池,酗锻译碟学亮猛撼撵姻刀但碌躲繁星庞悬窝囱检滋柑晴诣抉持宰苔拜墒梧高级软件工程(IR、POA)高级软件工程(IR、POA),7,ORB可以访问多个接口池原因:两个ORB对接口池的实现有不同的要求对象实现(例如OODB)希望提供它自己的类型信息 或者它希望将不同的附加信息存储在不同的repository中使用typecode和repository标识符的目的是允许不同的repository保持它们自己的信息一致,接口池,海轩始例死抢馆印汕焉宣见啥讳耐郁苯共瘦匙脚剁自溅二暗壤壹甜既般碌高级软件工程(IR、POA)高级软件工程(IR、POA),8,接口池,骡圾楞峻脊橙现抓拥叛逻汇六庙竭栖赠缓磺商伞恿顾铆夜澎耳侮镭耐乖兽高级软件工程(IR、POA)高级软件工程(IR、POA),9,接口池信息的一个关键用途是将ORB连接在一起当对象在请求中从一个ORB传到另一个ORB时可能有必要创建新对象代表接收ORB中的传送对象这可能需要在接收ORB的接口池中找到接口信息 通过从发送ORB的repository中获取repository标识符可以在接收ORB的repository中查找接口为成功操作,该对象的接口必须 同时安装在两个repository中并且有相同的repository标识符,接口池,烫鸟讳衔迁宜矽曼亮支佃满沸裔园供礁砷州耶氓辅辰巴匆斌琴涅籽书药侨高级软件工程(IR、POA)高级软件工程(IR、POA),10,(3)实现相关性,接口池中的实现需要某些形式的永久对象存储通常永久对象存储类型用于决定接口定义如何分布和/或在网络域中复制如果使用文件系统提供对象存储那么在单个机器上可能只有一组接口的唯一副本如果使用OODB提供对象存储那么可以维护接口定义的多个副本每个副本都分布在几台机器上以提供高可用性和负载平衡,接口池,验囱笺彪庙签排殷媚颇绰溺外纹专慌码咕废肚酶筷吧磊穗煌某幌好馅折星高级软件工程(IR、POA)高级软件工程(IR、POA),11,接口池包含允许程序在运行时确定和处理类型信息的信息程序可以尝试在任何时候通过对象引用上的get_interface访问接口池一旦信息已经安装在repository中那么程序、stub和对象可以使用它对象repository的更新必须小心以避免破坏环境在更新接口池时某些接口池可能使用Object Services定义的事务和并发控制例如,支持Transaction Service的repository将继承Repository接口它包括更新操作 Transaction接口它包含事务管理操作,接口池,懦孺墩塔赴芋咒徒话筒许液缅憋陶麦笼喉羞莲椿郝既旁晌奸盂蠕剂股篷惠高级软件工程(IR、POA)高级软件工程(IR、POA),12,(4)接口池接口元素,名称和标识 类型和类型码 接口对象 IR的结构与导航,接口池,刷咙瞒蜜疼逞叛吱肺傅光阻坑猛愧歉棕式子炽走埠浓缝堪攻骚俐陛区粒搞高级软件工程(IR、POA)高级软件工程(IR、POA),13,名称和标识 简单名称在接口池中没有必要是唯一的它们通常与显式或隐式的模块有关在该环境中,接口定义通常被认为是显式模块限定范围的名称唯一地标识接口池中的 模块、接口、常量、类型定义、例外情况、属性和操作repository标识符全局地表示模块、接口、常量、类型定义、例外情况、属性和操作它们可以用于同步多个ORB和Repository上的定义,接口池,兢釉顺叉骤播凋浅馒饵煎浅萧淫乘腥小讹峡镇藕狱轩没董掠寝邵玲坞将裳高级软件工程(IR、POA)高级软件工程(IR、POA),14,类型和类型码(TypeCode)类型码 是标识调用参数类型与属性类型的值 可以确定类型的完整结构 可以从IR或IDL编译器中获得 类型码具有多种用途:在DII中,被用于指示实际参数的类型由IR使用,表示作为许多 OMG IDL 声明中一部分的类型规约它们对于any 类型的语义极为关键 抽象地讲,类型码 包含 一个“kind”域 以及 适于该 Kind 的参数集合 例如,描述 long 的 类型码具有kind tk_long,无参数 描述 sequence 的类型码具有 kind tk_sequence包含两个参数:10 and boolean,接口池,憋啮堰窜佬褂摄航踞彻斡萨灌豪织稽牧广乒咒糙僧羊娇考奇争障关吮胯矢高级软件工程(IR、POA)高级软件工程(IR、POA),15,接口池,垢奔抡桐兔钒犹陈靳粥怯闭犁命顷浇峙宰薛翌仆罢伍氰每咽悬殊竿愉茶涅高级软件工程(IR、POA)高级软件工程(IR、POA),16,接口池,濒感叛暮抄传耐休朵酶阵狞偷韭动戊支鸟譬更兄具艺锋识坡汗隘糠侠蛋厨高级软件工程(IR、POA)高级软件工程(IR、POA),17,接口对象,接口池管理的关于每个接口的信息都以下面类型的接口池对象集合的形式维护Repository:接口池名空间中最顶层的模块;它包括常量、类型定义、例外、接口,或者值类型定义以及模块ModuleDef:接口与值类型的的逻辑组;它包括常量、类型定义、例外、接口,或者值类型定义以及其它模块InterfaceDef:接口定义;它包括常量、类型、例外、操作以及属性。ValueDef:值类型定义,它包含常量表、类型表、例外表、操作表、属性表及成员,接口池,烤妒柱肠难旅娘幢避所瞧赔裁驴俭衍律挥厘箱迪宴熊烧促谎炉烬纤矩妈污高级软件工程(IR、POA)高级软件工程(IR、POA),18,ValueBoxDef:boxed值类型定义ValueMemberDef:值类型成员定义AttributeDef:接口或值类型属性的定义OperationDef:接口或值类型操作的定义;包含参数列表与例外TypedefDef:基本接口,非接口或值类型的named type定义ConstantDef:常量定义ExceptionDef:操作所引发例外的定义,接口池,蛰腑惕喇凹沥役筐乐消坠寻坑开飘娜陕卑搪桥炭偶肛雾击块监胚笑伟究球高级软件工程(IR、POA)高级软件工程(IR、POA),19,每个接口池对象的接口规范列出了由该对象维持的属性 这些属性多数与OMG IDL语句直接对应一个实现可以 选择维持附加的属性以便于管理池或者记录关于接口的附加信息扩展IR接口的实现应当采用 导出新接口 而不是修改标准接口 实现CORBA规范为接口池对象定义了操作的一个最小集IR的一个实现可能提供的附加操作 可以包含提供实体版本化的操作 以及规范的反编译,接口池,隧萤谱谓腰烯脐由眺搞蔷毒臣晰境鼓偷猖驼籽妖氏靖窿迄艺皮蹦勺赘许辙高级软件工程(IR、POA)高级软件工程(IR、POA),20,IR的结构与导航,接口池中的定义是按照接口池对象集合的形式进行组织的这些对象的组织方式与定义的组织方式相同:一些对象(定义)包含其它对象,接口池,颓究汪税赞亿舌逐诣咳坚秀粪景奇廷薄矽营亨光甚度望券捆烈渐禽郸庞炔高级软件工程(IR、POA)高级软件工程(IR、POA),21,接口池,震禽寓甄勉粉摈抨张徘竭切输靖值点乘挚血壁皋棋姐总绰疮壮压酣执抒匣高级软件工程(IR、POA)高级软件工程(IR、POA),22,在接口池中定位一个接口的方式有三种:1.从ORB直接获取一个 InterfaceDef 对象2.利用一个名序列在模块空间中航行3.定位与一个特定池表示对应的InterfaceDef 对象如果一个对象的类型在编译时刻尚未确定则适于直接获取一个InterfaceDef 对象通过利用对象的引用调用get_interface 操作可以在接口池中获得关于该对象的信息该信息可以被用于在该对象上执行操作,接口池,仆咆执震进羔瘩饵提第待腆茹茶叼招一扼镀迢篮笑鞍肚轧命票纷芜锥恫滔高级软件工程(IR、POA)高级软件工程(IR、POA),23,当需要一个特定命名的接口时则适于在模块名空间中航行从接口池的根模块开始可以根据名字获得入口 当在一个接口池中查找一个对应的入口时则适于通过ID定位InterfaceDef 对象通过在两个池中使用相同的标识可以在一个池中获得一个接口的接口标识 然后从另一个池获得那个接口的信息(那个池可能近一些或者包含关于接口的附加信息),接口池,走蓄嘶芯值凤掇沂戚循军蔗醋聪劳味瓶辰嚼誊繁奥卓廓嫌诵阶怠檄太督酉高级软件工程(IR、POA)高级软件工程(IR、POA),24,(5)IR接口一组公共的操作被用于在IR中定位对象这些操作在接口IRObject,Container,and Contained等中被定义所有的IR对象继承IRObject接口它提供了一个区别对象具体类型的操作属于容器的对象从Container接口中继承navigation操作被其它对象包容的对象从Contained接口中继承navigation操作,接口池,蔓火浦车沾毡种惕盯腆瞎狱锭糯荣敏谎英仓哦撂飘牲贝龙之娶檀步市濒瓤高级软件工程(IR、POA)高级软件工程(IR、POA),25,IDLType 接口被所有标识IDL类型的IR对象所继承包括interfaces,typedefs,及 anonymous typesTypedefDef 接口被所有named non-interface types对象多继承基本接口 IRObjectContainedContainer IDLType及 TypedefDef不是暂时性的IR中的所有字符串数据被按照ISO 8859-1 coded character set中的定义编码,接口池,挺铀梳素猛量绥匠笨限世还锈砧婴吩腋雷池沛好虱悄目滞落代伺诬牲网怂高级软件工程(IR、POA)高级软件工程(IR、POA),26,接口池,惑率借词悉考石松钝仙莆瘤脾兴终翱实毅渊壮兢乍婆腾执鞋倒与林揖粥枚高级软件工程(IR、POA)高级软件工程(IR、POA),27,7、POA,设计目标模型元素模型体系结构POA创建引用创建对象活动状态请求处理隐式激活多线程DSI位置透明性POA接口,POA,写哟沟酞防革储省夜感碍想蓟宅城围忘侥莱锚桓勿约佬呈逃牟秽联欲毁半高级软件工程(IR、POA)高级软件工程(IR、POA),28,(1)POA的设计目标允许编程人员构造 可以在不同ORB产品上移植的对象实现提供对永久对象的支持允许编程人员构造的对象实现存活时间(从持有对象引用的客户角度)跨越多个服务器存活时间提供对透明对象激活的支持允许单个的服务同时支持多个对象标识允许多个不同的POA实例存在于一个服务器中提供对transient对象的支持,花费最小的编程代价与负载,POA,抱人键农勺骋泼静怀苗昔非溅毫膏亨赔蔽喂箭算谜访恭羔拌锋卯映蹈滩愈高级软件工程(IR、POA)高级软件工程(IR、POA),29,提供对隐式服务激活的支持,对象标识由POA分配允许对象实现最大可能地为对象行为负责 特别地,一个实现可以控制对象的行为通过 建立定义对象标识的数据决定对象标识与对象状态之间的关系 管理对象状态的存储与检索提供响应请求时将被执行的代码以及在任意时刻决定对象是否存在避免请求ORB维护描述独立对象的永久状态它们的 标识,它们的状态存在何处某些标识值是否以前已经被使用过一个对象是否已经被彻底删除 等等提供一个扩展机制用于将策略信息与POA中实现的对象进行关联,POA,狡醉津坤友菠扣果胁狄氏捻铬亲郸合延龟磕土积舆适魏职裂猜伙园缮伙灶高级软件工程(IR、POA)高级软件工程(IR、POA),30,(2)POA的模型元素,客户 是一个计算语境它通过对一个对象的引用向其提出请求服务器 是一个计算语境对象的实现体存在于其中一般情况下,一个服务器对应于一个进程对象 是一个具有标识、接口、及实现的程序体 从一个客户的视角,对象的标识封装在对象的引用中 POA模型定义了从服务器视角看对象的标识它由对象实现通过POA接口显式管理,POA,怪格克巧岭贯蕊甸悼塞如撂骨拥途菜偿廓辊友恰澈蹿抚膀机给赶电三坡汰高级软件工程(IR、POA)高级软件工程(IR、POA),31,Servant服务体是实现一个或多个对象请求的编程语言对象或实体服务体一般存在于一个服务器进程语境中向一个对象应用提出的请求由ORB中转并转变为向一个特定服务体的调用在一个对象生命时间内,它可能与多个服务体相关所谓相关是指向它的请求将以服务体为目标Object Id一个对象标识是一个值,由POA及用户提供的实现使用以标识一个特定的抽象CORBA对象对象标识值对于客户是隐藏的,由引用封装对象标识没有标准的形式它们由POA作为未解释的8进制位序列管理,POA,屉戎坤鸥俩口时杰讽否矮巩痒治祸辗机爬稗升讥沫曝宣傀乡娥促铺滔厂钟高级软件工程(IR、POA)高级软件工程(IR、POA),32,Object Reference一个对象引用封装了一个对象标识及一个POA标识在一个特定ORB实现中的一个具体引用包含更多的信息例如服务器位置被考虑的POA等(它可能包含POA的全名 及从根部到特定POA的所有POA的名字)引用也可能不包含对象标识 但却包含由ORB管理的压缩过的值它们可以被影射为对象标识,POA,嚎训正颇劳颅咽漂橙庆素姓怪蒸振扑叛委篇句标蛤雪庚眶指歼葬幕茁侧琳高级软件工程(IR、POA)高级软件工程(IR、POA),33,POA 可移植对象适配器是在服务器语境中的一个可标识实体 每个POA为对象标识提供了一个名空间并为其它POA(nested or child)提供一个名空间与POA相关的策略描述了在那个POA中对象实现的特征Nested POAs为一个服务器中的对象形成了一个层次式的名空间Policy策略是一个应用程序的与POA相关的对象以指定在那个POA中实现的对象共享的特征本规范定义一些策略,以控制POA的线程模型 以及一些其它与对象管理相关的选项,POA,诞煎散扔兜琵泉歉础郴闯乘样卧寨怨颤灼邯脚靖蛆棘咨犹咖邹砾豺俞龚娶高级软件工程(IR、POA)高级软件工程(IR、POA),34,POA ManagerPOA管理器是一个封装一个或多个POA处理状态的对象利用POA管理器上的操作开发者可以使向相关POA发出的请求被排队或丢弃开发者也可以利用POA管理器去活POAServent Manager服务体管理器是一个可以与POA关联的对象服务体管理器 负责管理一个对象与特定服务体的关联并负责决定一个对象是否存在ORB可以调用服务体管理器上的操作,以激活或去活服务体,POA,蓟攒窗住蒜则拳典站侍物号皮厩篙导烧嗓该戒门炕卧进桶网喇和耙波兄悉高级软件工程(IR、POA)高级软件工程(IR、POA),35,Adaptor Activator一个适配器激活器是可以与POA关联的对象当一个请求被从目前不存在的子POA收到时ORB将激活适配器激活器上的一个操作适配器激活器可以根据命令创建所需的POA,POA,浴抢势驱豺霄均摊菌摩咏刁签珊逮柿竭逐聂箭箕肥印甲祁蔼杜寿毅妥尉姚高级软件工程(IR、POA)高级软件工程(IR、POA),36,ORB是对客户与服务器皆可见的一个抽象POA是对服务器可见的对象用户提供的实现被注册在POA中 客户拥有引用 并向它发出请求ORB POA 与 实现共同决定操作需要调用哪个服务体并执行调用,(3)模型体系结构,POA,抱惟禾淌唉挎呵既怠畏佑绑改勒魔棚臃联殆嗡谨撅狡忱量恭饱形濒郁帛争高级软件工程(IR、POA)高级软件工程(IR、POA),37,POA,欺功墨淖柱琢笼娶躺甩哟游集贬还增嚷摊己累拾滞遏雹驭灸渝盗顽温愁讳高级软件工程(IR、POA)高级软件工程(IR、POA),38,如果 POA 支持 RETAIN 策略则它维护一张表(map):活动对象表(Active Object Map)AOP将对象标识与活动服务体关联起来每个关联组成了一个活动对象如果POA包含USE_DEFAULT_SERVANT 策略则一个缺省的服务体被注册到POA中相反,如果POA 包含USE_SERVANT_MANAGER 策略则一个用户编写的服务体管理器被注册到POA中如果活动对象表未被使用或者一个请求对应的对象未出现在活动对象表中POA或者使用缺省的服务器执行请求 或者它调用服务体管理器获取一个服务体来执行请求如果 RETAIN 策略被使用则由服务体管理器返回的服务体由活动对象表保持否则,服务体仅被用于处理一个请求,POA,闹摇执疾嚎狱凡彭户床淹巷聋捕豺砍灼艰农慷堡绣娥简溅三辨触息恰掸的高级软件工程(IR、POA)高级软件工程(IR、POA),39,POA,蔗卒谊翰唆鹅搔俗食印呵陡己仔哪锄允刑以罢先划墙厘健菌番囱沛霖襄丝高级软件工程(IR、POA)高级软件工程(IR、POA),40,(4)创建POA,为实现一个需要POA的对象需要服务器应用程序获取一个POA对象一个特殊的POA对象,根(root)POA,由ORB 进行管理并在初始对象名“RootPOA”下利用ORB初始化接口向应用程序提供应用程序开发者可以利用根POA创建对象开发者可以创建新POA:以允许开发者为新POA声明特定的策略并提供一个不同的适配器激活器即服务体管理器 也允许开发者划分对象的名空间因为对象标识的解释与POA相关开发者可以独立地为多个对象集合控制请求处理,POA,骗抄嘶青溪搁盔遥胰鞭硕耪诉挚佳朽果魂坊央窑稳忠枷跪绸坡忱怯垄胶竞高级软件工程(IR、POA)高级软件工程(IR、POA),41,一个 POA 是 利用父POA上的create_POA 操作作为一个已经存在POA的子POA创建的POA对象不是永久性的ORB不保存POA的任何状态服务器程序负责创建并初始化合适的POA对象创建适宜的POA对象对于跨越多个服务器生命时间的永久对象特别重要为支持在以前的服务器进程中创建的一个对象引用应用程序必须重新创建出创建对象引用的那个POA,以及祖先POA每个被重新创建的POA必须与以前POA的名字、策略相同,POA,辉徘狮奄歉休卢钳咎呈龙呆淫忿许仑氏等尊旬毕壕潘彝战鼠儿芽凛陪颖侮高级软件工程(IR、POA)高级软件工程(IR、POA),42,(5)引用创建,对象引用封装了对象标识信息以及ORB需要的信息用以标识并定位与对象关联的服务器以及POA引用按照下列方式被创建:服务器应用程序创建引用调用POA的create_reference 与 create_reference_with_id 操作从与POA相关的信息中,或者从传给操作的参数中在创建对象引用的过程中,它们将抽象的对象活化,但它不将其与一个活动的服务体关联,POA,系坐装短鳃励穗饺蹭桃敦厘薯桌经柜涛爬卖瞄党旱碰奢滑杀赂瘸细奖缝次高级软件工程(IR、POA)高级软件工程(IR、POA),43,服务器应用程序显式地激活一个服务体利用activate_object 或 activate_object_with_id 操作将其与一个对象标识关联一旦一个服务体被激活服务器应用程序可以 利用servant_to_reference 或 id_to_reference 操作将服务体影射为对应的引用,POA,啡柒最商梢昔淬渍桅碳子氟桌阻跺更淡雇鳞氢氛螺汝卯坍秀日驰官誊羽荐高级软件工程(IR、POA)高级软件工程(IR、POA),44,服务器应用程序可以使一个服务体隐式地激活自身 这种情况只有在POA利用IMPLICIT_ACTIVATION策略被创建的前提下才会发生如果尝试获取一个与非激活服务体对应的对象引用POA可能自动分配一个产生的唯一的Object Id 给服务体并激活结果对象非激活服务体的引用可以通过调用POA:servant_to_reference而被获得或者通过在允许这种转换的编程语言中 执行从服务体到一个引用类型的隐式或显式转换,POA,茧锡卵诞垄慈匆酱茵场匝咀臂革喳欣乖斤毙舜总官吝匿合韦谓祖帘震唤赶高级软件工程(IR、POA)高级软件工程(IR、POA),45,(6)对象活动状态,CORBA对象可以与一个活动服务体关联如果 POA 具有RETAIN 策略则服务体与它关联的对象标识被加入POA的活动对象表服务器应用程序自身显式激活单独的对象(通过activate_object 或者 activate_object_with_id 操作)服务器应用程序指导POA根据命令激活对象(通过使POA激活一个用户提供的服务体管理者)在某些环境下POA 可以隐式地激活一个对象当服务器应用程序试图为一个尚未激活的服务体(即,未与一个对象标识关联)获取一个引用,POA,逃赋骸植郭葵匠风读卜猫客依诺平橇酬宁耸考端找疫屹藏梆腕棕电进骆渗高级软件工程(IR、POA)高级软件工程(IR、POA),46,如果USE_DEFAULT_SERVANT策略也起作用服务器应用程序指导POA通过调用一个单个的服务体来激活未知的对象如果 POA 拥有 NON_RETAIN 策略对于每个请求POA 可以使用 一个缺省服务体 或者 一个服务体管理者定位一个活动服务体从POA的角度看服务体仅在一个请求过程中是活动的POA不将servant-object 关联加入活动对象表,POA,戈氛废仿扼肮昏蹬承粕疯迄普礼秋葬羚窟名抨记郁绘倪痹坞碗皇阜佰尘侠高级软件工程(IR、POA)高级软件工程(IR、POA),47,一个请求必须能够承载(conveying)目标对象的对象标识以及 创建目标对象引用的POA标识当一个客户发出一个请求时ORB 首先定位正确的服务器(也许在需要时启动它)然后在那个服务器中定位正确的POA如果 POA 不存在于服务器进程中应用程序有机会通过使用适配器激活器重新创建所需的POA一旦 ORB 已经定位了POA它将请求传送给那个POA对那个请求的进一步处理取决于 与那个POA关联的策略 以及对象的目前活动状态,POA,(7)请求处理,希肯嵌触啄惯驮针呜休捂雏忻具热逼袜某泛功侠哮硫怨贷块涅搐帐实铀磷高级软件工程(IR、POA)高级软件工程(IR、POA),48,如果 POA 有RETAIN 策略POA 将在活动对象表中查找是否有与来自请求的对象标识值关联的服务体如果这样的一个服务体存在则 POA 调用服务体上的相应方法如果 POA 有NON_RETAIN 策略或者有RETAIN 策略但未在活动对象表中发现服务体 POA 进行下面的动作:如果 POA 有USE_DEFAULT_SERVANT 策略一个缺省的服务器已经与该POA关联则POA 将调用该服务体上的相应方法如果没有服务体与POA关联POA引发OBJ_ADAPTER 系统例外,POA,攫乍辩窍剧讶职批俩跑肮与莆鸿取妨哟谱振该觉黎翅宠凿侮皂偏之谜蔑勇高级软件工程(IR、POA)高级软件工程(IR、POA),49,如果 POA 有USE_SERVANT_MANAGER 策略且一个服务器管理者已经与该POA关联则POA将调用它的incarnate 或 preinvoke 以发现可能处理请求的一个服务体如果没有与POA关联的服务体管理器POA引发OBJ_ADAPTER 系统例外如果USE_OBJECT_MAP_ONLY 策略起作用POA 引发 OBJECT_NOT_EXIST 系统例外,POA,超读瓦缨碌刻箕柱盔砷铰敏花如择渠凌艺酱哮恍壹倦婆腑报扒玩珊侧帛囤高级软件工程(IR、POA)高级软件工程(IR、POA),50,一个 POA 在创建时可以附带的一个策略指示它的对象可以被隐式地激活一个非活动的服务体可能通过某个操作被隐式地激活该操作逻辑上需要一个被分配给那个服务体的对象标识一个对象的隐式激活涉及分配一个系统产生的对象标识以及在活动对象表中注册服务体与对象标识与隐式激活的对象关联的接口由服务体决定,POA,(8)隐式激活,菩溺鳃柏冶含熏梭老音蛊哩仕褥具右唉焚犊耳瘫藻派吼鳞洱住窗彩朝降勾高级软件工程(IR、POA)高级软件工程(IR、POA),51,支持隐式激活的操作包括:POA:servant_to_reference 操作带有服务体参数,并返回一个引用POA:servant_to_id 操作带有服务体参数,并返回一个对象标识由影射语言支持的操作用来为一个服务体获取一个对象引用或者对象标识 例如,C+中的_this()服务体成员函数 为服务体返回一个对象引用由影射语言支持的隐式转换将服务体转换为一个对象引用或者一个对象标识后两类操作依赖于影射语言,POA,挚幸刻原株措余身辩肖倡蛰蛮赂嘱塔捎拯札回哨喧诵朴遣抢溺吼颈成稗乏高级软件工程(IR、POA)高级软件工程(IR、POA),52,(9)多线程,为了允许开发出使用线程的服务器当在一个多线程环境中使用时必须指定POA 的行为以及相关的接口指定这种行为,既不需要ORB 必须在一个线程环境中被支持也不需要 ORB 在处理请求时必须使用线程仅需要:如果一个 ORB确实提供对多线程的支持那么这些行为将被ORB支持这允许一个编程人员以在多个ORB间可移植的方式充分利用支持线程的多个ORBsPOA的处理受ORB中可用的与线程有关的调用的影响:work_pending,perform_work,run,及 shutdown,POA,森叛场舞先绕都扇豌蜡蔫绎敏捎贰宜吸邀崩后拐慢宵蕊艺浇繁昔衡辈镜脐高级软件工程(IR、POA)高级软件工程(IR、POA),53,POA 线程模型 当与多线程ORB实现一起被使用时POA 支持两种线程模型:ORB controlled 与single thread behavior 这两种模型可以被一起或者单独使用每种模型都可以应用于单线程ORB环境 如果创建POA的create_POA操作的策略参数中包含一个ThreadPolicy对象时 则与一个POA关联的线程模型被指示 一旦一个POA被根据一个模型而创建,它不能被变为另一个 服务器中所有对POA的使用必须和与这个POA关联的线程一致,POA,漂沙逻科掠喳霍毖豁塑试贺跟塘姬蘑邹儡狡静耳疫红悄裳哉霹储鹰紫证撑高级软件工程(IR、POA)高级软件工程(IR、POA),54,使用单线程模型向单线程POA的请求被顺序处理使用 ORB控制的模型 ORB 负责一个或多个POA所使用线程的创建、管理及解构使用多线程时的控制 ORB 与 POA 不涉及在一个POA内跨线程分派请求的工作 因此:服务器程序员必须安排在那些线程中对对象的顺序访问 可能同时存在对相同对象的多个活动请求 被多线程之间进行分派 编程人员必须清楚这种可能性并用心编码,POA,磅鬃虑敷料裸素狡究屉耳盲魄图鲤腑彝闪妖远剑搐们季藤盾浇恭砾宝唆沦高级软件工程(IR、POA)高级软件工程(IR、POA),55,POA的设计使得编程人员能够将服务体连接至:特定于类型的skeletons动态skeletons作为特定于skeleton类成员的服务体被认为是特定于类型的服务体连接至动态skeleton的服务体被用于实现DSI并被认为是DSI 服务体两个支持同一接口的CORBA对象可能一个由DSI服务体体现而另一个由特定于类型的服务体体现更进一步地,一个CORBA 对象可能仅在某些时候由一个DSI服务体体现而在其它时候由静态服务体体现,(10)DSI,POA,绘搓诈台锦伐娩哦逢炬啮拧眨佩埂任浙领嘉月鸳嫂效肆域滓蚁伺藩氧讫依高级软件工程(IR、POA)高级软件工程(IR、POA),56,POA为那些利用POA实现的对象提供位置透明性支持例如:与来自远地客户的请求类似,来自本地客户的请求在对象非活动时可能导致:对象被激活非确定性地阻塞,如果目标对象的POA处于holding 状态被拒绝,如果目标对象的POA处于被丢弃或者非活动状态被发送给一个线程透明的对象实现或者被发送给一个不同的对象,POA,(11)位置透明性,烩搓绘遭隐咽禾夫静崖宝仁哎鹊散哮附鞋瞩帛只蓑矢存渣琶断嫉尺畏碘拆高级软件工程(IR、POA)高级软件工程(IR、POA),57,与POA相关的接口的定义在PortableServer 中:POAPOAManagerServantManagerServantActivatorServantLocatorAdapterActivatorThreadPolicyLifespanPolicyIdUniquenessPolicyIdAssignmentPolicyImplicitActivationPolicyServantRetentionPolicyRequestProcessingPolicyCurrent,POA,POA接口,铬耕师蕴脆跨剧祥则贿萌五自奔碉焙格书卑瞅波和持依育脊琅鹃迪拽摆蓟高级软件工程(IR、POA)高级软件工程(IR、POA),58,RootPOA的策略:,牙枚耪臀皱国氢抄有甲郑霹掠歧殴健絮邻愧硬燕芋娥陪粤袋柑稠嫌稀褒浙高级软件工程(IR、POA)高级软件工程(IR、POA),

    注意事项

    本文(高级软件工程IRPOA.ppt)为本站会员(sccc)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开