高级软件工程04(IR、POA.).ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《高级软件工程04(IR、POA.).ppt》由用户(罗嗣辉)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 高级 软件工程 04 IR POA
- 资源描述:
-
1、1是是ORB的构件的构件提供一致的接口定义存储机制提供一致的接口定义存储机制管理和提供对管理和提供对OMG IDL所指定对象定义集合的访问所指定对象定义集合的访问2概述概述 IR的范围的范围实现相关性实现相关性概念与原理概念与原理IR接口接口3(1)概述)概述ORB提供对对象集合的分布式访问提供对对象集合的分布式访问方法是使用方法是使用OMG IDL中指定的对象公共定义接口中指定的对象公共定义接口接口池为相关对象的接口定义集合接口池为相关对象的接口定义集合提供存储、分布和管理提供存储、分布和管理ORB可以使用两种形式的对象定义:可以使用两种形式的对象定义:通过将信息从过程上合并到通过将信息从过
2、程上合并到stub程序中程序中 例如,作为将例如,作为将C语言子程序映射到通讯协议中的代码语言子程序映射到通讯协议中的代码通过动态可访问的接口池访问到通过动态可访问的接口池访问到 例如,作为通过特定于例如,作为通过特定于OMG IDL接口访问的接口访问的“接口对象接口对象”4ORB可以使用在接口池中维护的对象定义可以使用在接口池中维护的对象定义解释和处理请求中提供的值:解释和处理请求中提供的值: 提供请求签名的类型检查(请求是否通过提供请求签名的类型检查(请求是否通过DII或或stub发出的)发出的) 帮助检查接口继承关系的正确性帮助检查接口继承关系的正确性 帮助提供不同帮助提供不同ORB实现
3、之间的互操作性实现之间的互操作性由于接口池中所维护对象定义的接口是公共的由于接口池中所维护对象定义的接口是公共的因此客户和服务也可以使用因此客户和服务也可以使用Repository中维护的信息中维护的信息例如,例如,Repository可用于:可用于: 管理接口定义的安装和分布管理接口定义的安装和分布 提供提供CASE环境的构件(例如,接口浏览器)环境的构件(例如,接口浏览器) 提供语言绑定的接口信息(例如编译器)提供语言绑定的接口信息(例如编译器) 提供最终用户环境的构件(例如,菜单栏构造器)提供最终用户环境的构件(例如,菜单栏构造器)5(2)IR的范围的范围 接口对象作为一组对象在接口池中
4、维护接口对象作为一组对象在接口池中维护可以通过一组特定于可以通过一组特定于OMG IDL接口定义访问它们接口定义访问它们接口定义包含它支持的操作描述,接口定义包含它支持的操作描述, 包括参数类型、例外和它可以使用的环境信息包括参数类型、例外和它可以使用的环境信息此外,接口池还存储常量值此外,接口池还存储常量值 它可以用在其它接口定义中或者仅仅为方便程序员而定义它可以用在其它接口定义中或者仅仅为方便程序员而定义接口池还存储接口池还存储 typecode,这是以结构化术语描述类型的值,这是以结构化术语描述类型的值6 接口池使用模块作为组织接口的方式接口池使用模块作为组织接口的方式并且根据名称查找这
5、些组织并且根据名称查找这些组织模块可以包含常量、类型定义、例外情况、接口定义和其它模块模块可以包含常量、类型定义、例外情况、接口定义和其它模块例如,模块可以对应于例如,模块可以对应于OMG IDL定义的组织定义的组织它们也可以用于代表为管理和其它用途定义的组织它们也可以用于代表为管理和其它用途定义的组织接口池是代表其中信息的一组对象接口池是代表其中信息的一组对象它们是在该透明对象结构上运作的操作它们是在该透明对象结构上运作的操作具体实现可以选择这些对象具体实现可以选择这些对象 是否永久存在是否永久存在 或者在或者在repository上的操作引用时创建上的操作引用时创建也可以有有效提取信息的操
6、作也可以有有效提取信息的操作获得描述整个接口或整个操作的信息块获得描述整个接口或整个操作的信息块7ORB可以访问多个接口池可以访问多个接口池原因原因:两个两个ORB对接口池的实现有不同的要求对接口池的实现有不同的要求对象实现(例如对象实现(例如OODB)希望提供它自己的类型信息)希望提供它自己的类型信息 或者它希望将不同的附加信息或者它希望将不同的附加信息存储在不同的存储在不同的repository中中使用使用typecode和和repository标识符的目的是标识符的目的是允许不同的允许不同的repository保持它们自己的信息一致保持它们自己的信息一致89接口池信息的一个关键用途是接口
7、池信息的一个关键用途是将将ORB连接在一起连接在一起当对象在请求中从一个当对象在请求中从一个ORB传到另一个传到另一个ORB时时可能有必要创建新对象代表接收可能有必要创建新对象代表接收ORB中的传送对象中的传送对象这可能需要在接收这可能需要在接收ORB的接口池中找到接口信息的接口池中找到接口信息 通过从发送通过从发送ORB的的repository中获取中获取repository标识符标识符可以在接收可以在接收ORB的的repository中查找接口中查找接口为成功操作,为成功操作, 该对象的接口必须该对象的接口必须 同时安装在两个同时安装在两个repository中并且有相同的中并且有相同的r
8、epository标识符标识符10(3)实现相关性)实现相关性 接口池中的实现需要某些形式的永久对象存储接口池中的实现需要某些形式的永久对象存储通常永久对象存储类型用于通常永久对象存储类型用于决定接口定义如何分布和决定接口定义如何分布和/或在网络域中复制或在网络域中复制如果使用文件系统提供对象存储如果使用文件系统提供对象存储那么在单个机器上可能只有一组接口的唯一副本那么在单个机器上可能只有一组接口的唯一副本如果使用如果使用OODB提供对象存储提供对象存储那么可以维护接口定义的多个副本那么可以维护接口定义的多个副本每个副本都分布在几台机器上每个副本都分布在几台机器上以提供高可用性和负载平衡以提供
9、高可用性和负载平衡11接口池包含接口池包含允许程序在运行时确定和处理类型信息的信息允许程序在运行时确定和处理类型信息的信息程序可以尝试在任何时候通过对象引用上的程序可以尝试在任何时候通过对象引用上的get_interface访问接口池访问接口池一旦信息已经安装在一旦信息已经安装在repository中中那么程序、那么程序、stub和对象可以使用它和对象可以使用它对象对象repository的更新必须小心的更新必须小心以避免破坏环境以避免破坏环境在更新接口池时在更新接口池时某些接口池可能使用某些接口池可能使用Object Services定义的事务和并发控制定义的事务和并发控制例如,支持例如,支
10、持Transaction Service的的repository将继承将继承Repository接口接口它包括更新操作它包括更新操作 Transaction接口接口它包含事务管理操作它包含事务管理操作12(4)接口池接口元素接口池接口元素 名称和标识名称和标识 类型和类型码类型和类型码 接口对象接口对象 IR的结构与导航的结构与导航13名称和标识名称和标识 简单名称在接口池中没有必要是唯一的简单名称在接口池中没有必要是唯一的它们通常与显式或隐式的模块有关它们通常与显式或隐式的模块有关在该环境中,接口定义通常被认为是显式模块在该环境中,接口定义通常被认为是显式模块限定范围的名称唯一地标识接口池中
11、的限定范围的名称唯一地标识接口池中的 模块、接口、常量、类型定义、例外情况、属性和操作模块、接口、常量、类型定义、例外情况、属性和操作repository标识符全局地表示标识符全局地表示模块、接口、常量、类型定义、例外情况、属性和操作模块、接口、常量、类型定义、例外情况、属性和操作它们可以用于同步多个它们可以用于同步多个ORB和和Repository上的定义上的定义14 类型和类型码(类型和类型码(TypeCode) 类型码类型码 是标识调用参数类型与属性类型的值是标识调用参数类型与属性类型的值 可以确定类型的完整结构可以确定类型的完整结构 可以从可以从IR或或IDL编译器中获得编译器中获得
12、类型码具有多种用途:类型码具有多种用途:在在DII中,被用于指示实际参数的类型中,被用于指示实际参数的类型由由IR使用,表示作为许多使用,表示作为许多 OMG IDL 声明中一部分的类型规约声明中一部分的类型规约它们对于它们对于any 类型的语义极为关键类型的语义极为关键 抽象地讲,类型码抽象地讲,类型码 包含包含 一个一个 “kind”域域 以及以及 适于该适于该 Kind 的参数集合的参数集合 例如,描述例如,描述 long 的的 类型码具有类型码具有kind tk_long ,无参数,无参数 描述描述 sequence 的类型码具有的类型码具有 kind tk_sequence包含两个参
13、数:包含两个参数: 10 and boolean151617接口对象接口对象接口池管理的关于每个接口的信息接口池管理的关于每个接口的信息都以下面类型的接口池对象集合的形式维护都以下面类型的接口池对象集合的形式维护Repository: 接口池名空间中最顶层的模块;接口池名空间中最顶层的模块;它包括常量、类型定义、例外、接口,它包括常量、类型定义、例外、接口,或者值类型定义以及模块或者值类型定义以及模块ModuleDef: 接口与值类型的的逻辑组;接口与值类型的的逻辑组;它包括常量、类型定义、例外、接口,它包括常量、类型定义、例外、接口,或者值类型定义以及其它模块或者值类型定义以及其它模块Int
14、erfaceDef: 接口定义;接口定义;它包括常量、类型、例外、操作以及属性。它包括常量、类型、例外、操作以及属性。ValueDef: 值类型定义,值类型定义,它包含常量表、类型表、例外表、操作表、属性表及成员它包含常量表、类型表、例外表、操作表、属性表及成员18ValueBoxDef: boxed值类型定义值类型定义ValueMemberDef:值类型成员定义值类型成员定义AttributeDef: 接口或值类型属性的定义接口或值类型属性的定义OperationDef: 接口或值类型操作的定义接口或值类型操作的定义;包含参数列表与例外包含参数列表与例外TypedefDef: 基本接口,非接
15、口或值类型的基本接口,非接口或值类型的named type定义定义ConstantDef:常量定义常量定义ExceptionDef: 操作所引发例外的定义操作所引发例外的定义19每个接口池对象的接口规范列出了由该对象维持的属性每个接口池对象的接口规范列出了由该对象维持的属性 这些属性多数与这些属性多数与OMG IDL语句直接对应语句直接对应一个实现可以一个实现可以 选择维持附加的属性以便于管理池选择维持附加的属性以便于管理池或者记录关于接口的附加信息或者记录关于接口的附加信息扩展扩展IR接口的实现应当采用接口的实现应当采用 导出新接口导出新接口 而不是修改标准接口而不是修改标准接口 实现实现C
16、ORBA规范为接口池对象定义了操作的一个最小集规范为接口池对象定义了操作的一个最小集IR的一个实现可能提供的附加操作的一个实现可能提供的附加操作 可以包含提供实体版本化的操作可以包含提供实体版本化的操作 以及规范的反编译以及规范的反编译20 IR的结构与导航的结构与导航 接口池中的定义是按照接口池对象集合的形式进行组织的接口池中的定义是按照接口池对象集合的形式进行组织的这些对象的组织方式与定义的组织方式相同:这些对象的组织方式与定义的组织方式相同:一些对象(定义)包含其它对象一些对象(定义)包含其它对象2122在接口池中定位一个接口的方式有三种:在接口池中定位一个接口的方式有三种:1.从从OR
17、B直接获取一个直接获取一个 InterfaceDef 对象对象2.利用一个名序列在模块空间中航行利用一个名序列在模块空间中航行3.定位与一个特定池表示对应的定位与一个特定池表示对应的InterfaceDef 对象对象如果一个对象的类型在编译时刻尚未确定如果一个对象的类型在编译时刻尚未确定则适于直接获取一个则适于直接获取一个InterfaceDef 对象对象通过利用对象的引用调用通过利用对象的引用调用get_interface 操作操作可以在接口池中获得关于该对象的信息可以在接口池中获得关于该对象的信息该信息可以被用于在该对象上执行操作该信息可以被用于在该对象上执行操作23当需要一个特定命名的接
18、口时当需要一个特定命名的接口时则适于在模块名空间中航行则适于在模块名空间中航行从接口池的根模块开始从接口池的根模块开始可以根据名字获得入口可以根据名字获得入口 当在一个接口池中查找一个对应的入口时当在一个接口池中查找一个对应的入口时则适于通过则适于通过ID定位定位InterfaceDef 对象对象通过在两个池中使用相同的标识通过在两个池中使用相同的标识可以在一个池中获得一个接口的接口标识可以在一个池中获得一个接口的接口标识 然后从另一个池获得那个接口的信息然后从另一个池获得那个接口的信息(那个池可能近一些(那个池可能近一些或者包含关于接口的附加信息)或者包含关于接口的附加信息)24(5)IR接
19、口接口一组公共的操作被用于在一组公共的操作被用于在IR中定位对象中定位对象这些操作在接口这些操作在接口IRObject, Container, and Contained等中等中被定义被定义所有的所有的IR对象继承对象继承IRObject接口接口它提供了一个区别对象具体类型的操作它提供了一个区别对象具体类型的操作属于容器的对象从属于容器的对象从Container接口中继承接口中继承navigation操作操作被其它对象包容的对象从被其它对象包容的对象从Contained接口中继承接口中继承navigation操作操作25IDLType 接口被所有标识接口被所有标识IDL类型的类型的IR对象所继
20、承对象所继承包括包括interfaces, typedefs, 及及 anonymous typesTypedefDef 接口接口被所有被所有named non-interface types对象多继承对象多继承基本接口基本接口 IRObjectContainedContainer IDLType及及 TypedefDef不是暂时性的不是暂时性的IR中的所有字符串数据被按照中的所有字符串数据被按照ISO 8859-1 coded character set中的定义编码中的定义编码26277、POA设计目标设计目标模型元素模型元素模型体系结构模型体系结构POA创建创建引用创建引用创建对象活动状态
21、对象活动状态请求处理请求处理隐式激活隐式激活多线程多线程DSI位置透明性位置透明性POA接口接口28 (1)POA的设计目标的设计目标l允许编程人员构造允许编程人员构造 可以在不同可以在不同ORB产品上移植的对象实现产品上移植的对象实现l提供对永久对象的支持提供对永久对象的支持允许编程人员构造的对象实现允许编程人员构造的对象实现存活时间(从持有对象引用的客户角度)存活时间(从持有对象引用的客户角度)跨越多个服务器存活时间跨越多个服务器存活时间l提供对透明对象激活的支持提供对透明对象激活的支持l允许单个的服务同时支持多个对象标识允许单个的服务同时支持多个对象标识l允许多个不同的允许多个不同的PO
22、A实例存在于一个服务器中实例存在于一个服务器中l提供对提供对transient对象的支持,花费最小的编程代价与负载对象的支持,花费最小的编程代价与负载29l提供对隐式服务激活的支持,对象标识由提供对隐式服务激活的支持,对象标识由POA分配分配l允许对象实现最大可能地为对象行为负责允许对象实现最大可能地为对象行为负责 特别地,一个实现可以控制对象的行为特别地,一个实现可以控制对象的行为通过通过 建立定义对象标识的数据建立定义对象标识的数据决定对象标识与对象状态之间的关系决定对象标识与对象状态之间的关系 管理对象状态的存储与检索管理对象状态的存储与检索提供响应请求时将被执行的代码提供响应请求时将被
23、执行的代码以及在任意时刻决定对象是否存在以及在任意时刻决定对象是否存在l避免请求避免请求ORB维护描述独立对象的永久状态维护描述独立对象的永久状态它们的它们的 标识,它们的状态存在何处标识,它们的状态存在何处某些标识值是否以前已经被使用过某些标识值是否以前已经被使用过一个对象是否已经被彻底删除一个对象是否已经被彻底删除 等等等等l提供一个扩展机制提供一个扩展机制用于将策略信息与用于将策略信息与POA中实现的对象进行关联中实现的对象进行关联30(2)POA的模型元素的模型元素客户客户 是一个计算语境是一个计算语境它通过对一个对象的引用向其提出请求它通过对一个对象的引用向其提出请求服务器服务器 是
24、一个计算语境是一个计算语境对象的实现体存在于其中对象的实现体存在于其中一般情况下,一个服务器对应于一个进程一般情况下,一个服务器对应于一个进程对象对象 是一个具有标识、接口、及实现的程序体是一个具有标识、接口、及实现的程序体 从一个客户的视角,对象的标识封装在对象的引用中从一个客户的视角,对象的标识封装在对象的引用中 POA模型定义了从服务器视角看对象的标识模型定义了从服务器视角看对象的标识它由对象实现通过它由对象实现通过POA接口显式管理接口显式管理31Servant服务体是实现一个或多个对象请求的编程语言对象或实体服务体是实现一个或多个对象请求的编程语言对象或实体服务体一般存在于一个服务器
25、进程语境中服务体一般存在于一个服务器进程语境中向一个对象应用提出的请求由向一个对象应用提出的请求由ORB中转中转并转变为向一个特定服务体的调用并转变为向一个特定服务体的调用在一个对象生命时间内,它可能与多个服务体相关在一个对象生命时间内,它可能与多个服务体相关所谓相关是指向它的请求将以服务体为目标所谓相关是指向它的请求将以服务体为目标Object Id一个对象标识是一个值,由一个对象标识是一个值,由POA及用户提供的实现使用及用户提供的实现使用以标识一个特定的抽象以标识一个特定的抽象CORBA对象对象对象标识值对于客户是隐藏的,由引用封装对象标识值对于客户是隐藏的,由引用封装对象标识没有标准的
展开阅读全文