公共对象请求代理体系结构(CORBA)的设计目的是.ppt
《公共对象请求代理体系结构(CORBA)的设计目的是.ppt》由会员分享,可在线阅读,更多相关《公共对象请求代理体系结构(CORBA)的设计目的是.ppt(42页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、3、CORBA 概述概述 公共对象请求代理体系结构(公共对象请求代理体系结构(CORBA)的设计目的是)的设计目的是 集成大量不同的对象系统。集成大量不同的对象系统。内容:内容:(1 1)对象请求代理结构)对象请求代理结构)对象请求代理结构)对象请求代理结构概念概念概念概念(2 2)ORBORB实现的方式实现的方式实现的方式实现的方式(3 3)客户的结构)客户的结构)客户的结构)客户的结构(4 4)对象实现的结构)对象实现的结构)对象实现的结构)对象实现的结构(5 5)对象适配器的结构)对象适配器的结构)对象适配器的结构)对象适配器的结构(6 6)一个请求的完整过程)一个请求的完整过程)一个请
2、求的完整过程)一个请求的完整过程例子例子例子例子CORBA 概述概述结构结构结构结构CORBA 概述概述例子例子:Grid ObjectGrid objectserver123581321345589144233widthheightget(row,col)set(row,col,value)clientCORBA 概述概述客户客户 是是 希望在对象上执行操作的实体希望在对象上执行操作的实体对象实现对象实现 是是 实现对象的代码和数据实现对象的代码和数据ORB 负责负责 组成请求的数据的通讯组成请求的数据的通讯 查找请求所需对象实现的机制查找请求所需对象实现的机制 准备接收请求的对象实现准备接
3、收请求的对象实现(1 1)对象请求代理的结构对象请求代理的结构对象请求代理的结构对象请求代理的结构客户如何通过客户如何通过ORB向对象实现发出请求向对象实现发出请求CORBA 概述概述对象请求代理的结构对象请求代理的结构CORBA 概述概述客户利用存根或者客户利用存根或者DII发出请求发出请求CORBA 概述概述对象实现通过对象实现通过Skeleton或者或者DSI接收请求接收请求CORBA 概述概述接口池与实现池接口池与实现池对对CORBA结构中元素的解释结构中元素的解释ORB及接口及接口客户客户对象实现对象实现 对象引用对象引用IDL及向编程语言的映射及向编程语言的映射客户存根与客户存根与
4、DII实现骨架与实现骨架与DSI对象适配器对象适配器接口池接口池实现池实现池CORBA 概述概述CORBA 概述概述对象请求代理(对象请求代理(ORB)不要求将不要求将ORB实现为单独的构件实现为单独的构件而仅定义其接口而仅定义其接口 任何提供正确接口的任何提供正确接口的ORB实现都是可以接受的实现都是可以接受的 ORB的具体实现包括:的具体实现包括:ORB Core、IDL编译器、编译器、IR、Object Adapter ORB可以有多种实现可以有多种实现 它们对对象引用有不同的表示方法它们对对象引用有不同的表示方法 并且有不同的调用执行方法并且有不同的调用执行方法 ORB Core 提供
5、对象的基本表示,以及请求的通讯提供对象的基本表示,以及请求的通讯 特别地:编排特别地:编排/反编排(反编排(Marshal/Unmarshal)将高层语言的参数等表示转换为将高层语言的参数等表示转换为便于底层网络传输的形式便于底层网络传输的形式ORB接口接口 ORB接口是客户与对象实现可以直接访问到的接口是客户与对象实现可以直接访问到的ORB功能接口功能接口 其它多数功能提供给其它多数功能提供给对象适配器对象适配器stubskeleton动态调用动态调用 ORB接口接口 对所有对所有ORB都是一样的都是一样的 不依赖于任何对象的接口或对象适配器不依赖于任何对象的接口或对象适配器CORBA 概述
6、概述CORBA 概述概述客户(客户(Client)(对象的)客户访问对象的对象引用(对象的)客户访问对象的对象引用并且调用对象上的操作并且调用对象上的操作 客户只知道对象的逻辑结构客户只知道对象的逻辑结构根据它的接口,并通过调用感受对象的行为根据它的接口,并通过调用感受对象的行为 尽管一般认为客户是向对象发出请求的程序或进程尽管一般认为客户是向对象发出请求的程序或进程 但是客户只是相对于特定对象而言的,是一个相对概念但是客户只是相对于特定对象而言的,是一个相对概念 一个对象的实现可以是其它对象的客户一个对象的实现可以是其它对象的客户客户客户客户客户服务器服务器服务器服务器CORBA 概述概述对
7、象实现对象实现 通过通过 为为 对象实例对象实例 定义定义 数据数据 和和 为为 对象方法对象方法 定义定义 代码代码 提供提供 对象的语义对象的语义对象可以具有不同的实现方式,包括:对象可以具有不同的实现方式,包括:单独的服务器单独的服务器库库每个方法的程序每个方法的程序封装应用程序封装应用程序面向对象的数据库面向对象的数据库 等等等等对象实现不依赖于对象实现不依赖于ORB或者客户调用对象的方式或者客户调用对象的方式对象实现可以对象实现可以 通过通过 选择选择Object Adapter 达到达到 选择与选择与ORB相关服务的接口相关服务的接口 的的 目的目的对象实现(对象实现(Object
8、 Implementation)对象引用提供在对象引用提供在ORB内指定对象时所需要的信息内指定对象时所需要的信息 对象引用对于客户和对象实现都是一个位流对象引用对于客户和对象实现都是一个位流(opaque)的概念的概念 因此客户与对象实现可以与引用的实际表示分离。因此客户与对象实现可以与引用的实际表示分离。在选择对象引用表示上,不同的在选择对象引用表示上,不同的ORB可以有所差别可以有所差别 传递给客户的对象引用表示仅在客户的生命期内有效传递给客户的对象引用表示仅在客户的生命期内有效 对于一个特定的编程语言,所有的对于一个特定的编程语言,所有的ORB都必须提供对象引用都必须提供对象引用 (通
9、常称为对象)的相同语言映射。(通常称为对象)的相同语言映射。这就允许用特定语言编写的程序可以在独立于特定这就允许用特定语言编写的程序可以在独立于特定ORB的情的情 况下访问对象引用。况下访问对象引用。语言映射也可以提供其它访问对象引用的方式语言映射也可以提供其它访问对象引用的方式CORBA 概述概述对象引用(对象引用(Object Reference)OMG接口定义语言(接口定义语言(OMG IDL)通过)通过 指定指定 对象接口对象接口 定义定义 对象类型对象类型 接口包括一组已命名的操作和这些操作的参数。接口包括一组已命名的操作和这些操作的参数。IDL 是一个分析设计结果是一个分析设计结果
10、 描述描述ORB操纵的对象操纵的对象其源代码的存在对其源代码的存在对ORB正常工作不是必须的正常工作不是必须的 在运行时刻,以在运行时刻,以stub程序或者运行时接口程序或者运行时接口repository的形式的形式提供等价的信息。提供等价的信息。通过通过IDL,特定对象实现告诉它潜在的客户:,特定对象实现告诉它潜在的客户:什么是有效的操作什么是有效的操作 以及以及 如何调用这些操作如何调用这些操作 从从IDL定义可以将定义可以将CORBA对象向对象向特定编程语言特定编程语言 或者或者 对象系统对象系统 映射映射CORBA 概述概述OMG接口定义语言接口定义语言interface Grid r
11、eadonly attribute short height;readonly attribute short width;void set(in short row,in short col,in long value);long get(in short row,in short col);例子:例子:grid.idlCORBA 概述概述CORBA中主要构件的接口全部由中主要构件的接口全部由IDL进行定义进行定义例如:例如:ORB接口、接口、Stub、Skeleton、对象适配器、对象适配器更主要的用途是定义应用对象!更主要的用途是定义应用对象!语言映射包括定义特定于语言的数据类型和通过语
12、言映射包括定义特定于语言的数据类型和通过ORB访问对象的过程接口。访问对象的过程接口。它包括它包括:客户客户stub接口的结构(面向对象的语言不需要)接口的结构(面向对象的语言不需要)动态调用接口动态调用接口实现骨架实现骨架对象适配器和直接对象适配器和直接ORB接口接口 语言映射也包括对象调用之间以及客户或实现中控制线程语言映射也包括对象调用之间以及客户或实现中控制线程之间的交互。之间的交互。最常见的映射提供同步调用:当对象操作完成时子程序返回最常见的映射提供同步调用:当对象操作完成时子程序返回 编译开关(选项)控制映射具体策略。编译开关(选项)控制映射具体策略。CORBA 概述概述IDL向具
13、体语言的映射向具体语言的映射CORBA 概述概述ORB client libraryORB server library编译编译 IDL:gridS.cppserver skeletongridC.cppclient stubsClientServergrid.hcommon declarationsgrid.idl所产生的所产生的 C+头文件头文件(Orbix):class Grid:public virtual CORBA:Object public:static Grid_ptr _bind(.);virtual CORBA:Short height(CORBA:Environment&
14、);virtual CORBA:Short width(CORBA:Environment&);virtual void set(CORBA:Short row,CORBA:Short col,CORBA:Long value,CORBA:Environment&);virtual CORBA:Long get(CORBA:Short row,CORBA:Short col,CORBA:Environment&);CORBA 概述概述客户存根(客户存根(Client stub)由由IDL编译器根据编译器根据IDL文件生成文件生成 客户访问对象的操作主要方式客户访问对象的操作主要方式 实现对象位
15、置透明性实现对象位置透明性 向非面向对象语言映射时向非面向对象语言映射时 将为每个接口类型产生一个将为每个接口类型产生一个stub编程接口编程接口 面向对象的编程语言不需要面向对象的编程语言不需要stub接口接口 它通过伪对象的方式提供访问对象的操作。它通过伪对象的方式提供访问对象的操作。CORBA 概述概述DII(动态调用接口动态调用接口)客户指定要调用的对象、要执行的操作和调用或调用序列客户指定要调用的对象、要执行的操作和调用或调用序列中操作的参数集,而不是调用特定于特殊对象上特殊操作的中操作的参数集,而不是调用特定于特殊对象上特殊操作的stub 子程序。子程序。客户代码必须提供要执行操作
16、的信息和传送参数的类型客户代码必须提供要执行操作的信息和传送参数的类型 动态调用接口的特性可能因编程语言映射的不同而不同动态调用接口的特性可能因编程语言映射的不同而不同 客户通过静态还是动态接口发出请求客户通过静态还是动态接口发出请求对于对象实现是透明的对于对象实现是透明的CORBA 概述概述CORBA_Create_request(.)CORBA_Request_add_arg(.)CORBA_Request_add_arg(.)CORBA_Request_invoke(.)CORBA_Request_delete(.)实现骨架实现骨架(Implementation Skeleton)由由I
17、DL编译器根据编译器根据IDL文件生成文件生成 对象适配器访问对象实现中方法的主要形式对象适配器访问对象实现中方法的主要形式 对于一种特定映射语言,以及可能的特定对象适配器对于一种特定映射语言,以及可能的特定对象适配器 Skeleton 与与 stub 不是必然对应的不是必然对应的客户也可以通过动态调用接口发出请求客户也可以通过动态调用接口发出请求 但也可以编写不使用但也可以编写不使用skeleton调用实现方法的对象适配器调用实现方法的对象适配器CORBA 概述概述动态骨架接口动态骨架接口(DSI)通过一个通过一个“提供访问操作名与参数的接口提供访问操作名与参数的接口”获得获得 一个对象的实
18、现一个对象的实现 实现代码必须向实现代码必须向ORB 提供提供 所有操作参数的描述所有操作参数的描述 ORB 提供提供 任何输入参数的值,以便在执行操作时使用任何输入参数的值,以便在执行操作时使用 在执行操作后,实现代码向在执行操作后,实现代码向ORB 提供提供 任何输出参数的值或者例外处理任何输出参数的值或者例外处理 适配器通过静态还是动态骨架接口访问对象实现适配器通过静态还是动态骨架接口访问对象实现 对于客户是透明的对于客户是透明的CORBA 概述概述动态骨架与动态调用可以被一起用于创建网关(动态骨架与动态调用可以被一起用于创建网关(Gateway)这些网关包括:不同这些网关包括:不同OR
19、B环境之间的网关环境之间的网关 不同防火墙软件之间的网关不同防火墙软件之间的网关 安全网关安全网关对象适配器对象适配器(Object Adaptor)对象适配器是对象实现访问对象适配器是对象实现访问ORB所提供服务的主要方式所提供服务的主要方式 ORB通过对象适配器提供的服务通常包括:通过对象适配器提供的服务通常包括:生成和解释对象引用生成和解释对象引用方法调用方法调用交互的安全性交互的安全性对象和实现激活及取消激活对象和实现激活及取消激活将对象引用映射到实现将对象引用映射到实现注册实现注册实现 对象粒度、寿命、策略、实现风格等的明显区别对象粒度、寿命、策略、实现风格等的明显区别 使得使得 O
20、RB核心很难为所有对象提供方便和有效的单一接口核心很难为所有对象提供方便和有效的单一接口通过对象适配器通过对象适配器ORB可以将一组特定的对象实现作为目标可以将一组特定的对象实现作为目标CORBA 概述概述接口池接口池(Interface Repository)接口池提供持久对象的服务接口池提供持久对象的服务 这些对象在运行时以可用的形式表示这些对象在运行时以可用的形式表示IDL信息信息 ORB可以使用接口池信息执行请求,例如:可以使用接口池信息执行请求,例如:如果程序在编译时遇到接口未知的对象,如果程序在编译时遇到接口未知的对象,那么使用接口池中的信息可以:那么使用接口池中的信息可以:确定对
21、象的有效操作确定对象的有效操作对它发出调用对它发出调用 除了在除了在ORB运行时提供职能外,接口池也是运行时提供职能外,接口池也是 存储存储 与与ORB对象接口相关的其它信息的对象接口相关的其它信息的 公共地点公共地点例如:调试信息例如:调试信息stub或或skeleton库库 形式化或浏览特定对象形式化或浏览特定对象等等等等CORBA 概述概述实现池实现池(Implementation Repository)实现池包含的信息允许实现池包含的信息允许ORB定位和激活对象实现定位和激活对象实现 尽管实现池中的大多数信息特定于尽管实现池中的大多数信息特定于ORB或者操作系统,或者操作系统,但是实现
22、池是习惯上记录这些信息的地点。但是实现池是习惯上记录这些信息的地点。安装实现和与激活及执行对象实现的策略控制是安装实现和与激活及执行对象实现的策略控制是 通过通过 实现池上的操作完成的实现池上的操作完成的 除了提供除了提供ORB运行时的职能外,实现池也是运行时的职能外,实现池也是 存储存储 与与ORB对象实现相关的其它信息的对象实现相关的其它信息的 公共地点公共地点 例如:例如:调试信息调试信息管理控制管理控制资源分配资源分配安全性安全性等等等等CORBA 概述概述(2)ORB实现方式实现方式 位于客户和对象实现内部的位于客户和对象实现内部的ORB 如果有合适的通讯机制,那么如果有合适的通讯机
23、制,那么ORB 可以可以 在客户和对象实现的程序中实现在客户和对象实现的程序中实现 客户中的客户中的stub使用位置透明的使用位置透明的IPC机制或者直接访问地点服务机制或者直接访问地点服务 建立与实现的通讯建立与实现的通讯 与实现关联的代码负责为客户设置合适的数据库(操作定位)与实现关联的代码负责为客户设置合适的数据库(操作定位)CORBA 概述概述 基于服务器的基于服务器的ORB 所有客户和实现可以与一个或多个服务器通讯所有客户和实现可以与一个或多个服务器通讯服务器的任务是将请求从客户发送到对象实现服务器的任务是将请求从客户发送到对象实现 就底层操作系统而言,就底层操作系统而言,ORB可以
24、是普通的程序可以是普通的程序并且可以使用普通的并且可以使用普通的IPC与与ORB通讯通讯 这是主要的这是主要的ORB实现方式,优点:实现方式,优点:客户与服务器目标码大小适度客户与服务器目标码大小适度便于配置便于配置CORBA 概述概述基于系统的基于系统的ORB 为增强安全性、健壮性和性能为增强安全性、健壮性和性能可以将可以将ORB作为底层操作系统的基本服务作为底层操作系统的基本服务 对象引用可以永远不变,从而减少了每次请求时验证的开销对象引用可以永远不变,从而减少了每次请求时验证的开销 由于操作系统可以知道客户和实现的地点及接口由于操作系统可以知道客户和实现的地点及接口因此可以实现许多不同的
25、优化因此可以实现许多不同的优化 例如当客户与实现在同一台机器上时,可以省缺编排活动例如当客户与实现在同一台机器上时,可以省缺编排活动基于库的基于库的ORB 对于小型、并且其实现可以共享的对象,实现可以在库中对于小型、并且其实现可以共享的对象,实现可以在库中CORBA 概述概述客户在它们的程序中以库子程序的方式客户在它们的程序中以库子程序的方式 访问访问特定对象类型的特定对象类型的stub客户程序在它的编程语言中以用普通方式调用该子程序客户程序在它的编程语言中以用普通方式调用该子程序客户将对象引用传送给客户将对象引用传送给stub子程序以初始化调用子程序以初始化调用 Stub 能够访问对象引用表
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 公共 对象 请求 代理 体系结构 CORBA 设计 目的
限制150内