高软件工程(CORBA概述)

上传人:ji****72 文档编号:50895828 上传时间:2018-08-11 格式:PPT 页数:41 大小:379.50KB
返回 下载 相关 举报
高软件工程(CORBA概述)_第1页
第1页 / 共41页
高软件工程(CORBA概述)_第2页
第2页 / 共41页
高软件工程(CORBA概述)_第3页
第3页 / 共41页
高软件工程(CORBA概述)_第4页
第4页 / 共41页
高软件工程(CORBA概述)_第5页
第5页 / 共41页
点击查看更多>>
资源描述

《高软件工程(CORBA概述)》由会员分享,可在线阅读,更多相关《高软件工程(CORBA概述)(41页珍藏版)》请在金锄头文库上搜索。

1、3 3、CORBA CORBA 概述概述公共对象请求代理体系结构(CORBA)的设计目的是集成大量不同的对象系统。内容:(1 1)对象请求代理结构)对象请求代理结构概念概念 (2 2)ORBORB实现的方式实现的方式 (3 3)客户的结构)客户的结构 (4 4)对象实现的结构)对象实现的结构 (5 5)对象适配器的结构)对象适配器的结构 (6 6)一个请求的完整过程)一个请求的完整过程例子例子CORBA 概述结构结构CORBA 概述例子 : Grid ObjectGrid objectserver123 5813 213455 89144233width height get(row,col)

2、 set(row,col,value)clientCORBA 概述客户 是 希望在对象上执行操作的实体 对象实现 是 实现对象的代码和数据 ORB 负责 组成请求的数据的通讯查找请求所需对象实现的机制准备接收请求的对象实现(1 1) 对象请求代理的结构对象请求代理的结构 客户如何通过ORB向对象实现发出请求CORBA 概述对象请求代理的结构CORBA 概述客户利用存根或者DII发出请求CORBA 概述对象实现通过Skeleton或者DSI接收请求CORBA 概述接口池与实现池对CORBA结构中元素的解释ORB及接口 客户 对象实现对象引用 IDL及向编程语言的映射 客户存根与DII 实现骨架与

3、DSI 对象适配器 接口池 实现池CORBA 概述CORBA 概述对象请求代理(ORB)不要求将ORB实现为单独的构件 而仅定义其接口任何提供正确接口的ORB实现都是可以接受的ORB的具体实现包括:ORB Core、IDL编译器、IR、Object AdapterORB可以有多种实现它们对对象引用有不同的表示方法并且有不同的调用执行方法ORB Core 提供对象的基本表示,以及请求的通讯特别地:编排/反编排(Marshal/Unmarshal)将高层语言的参数等表示转换为 便于底层网络传输的形式ORB接口ORB接口是客户与对象实现可以直接访问到的 ORB功能接口其它多数功能提供给 对象适配器

4、stub skeleton 动态调用ORB接口 对所有ORB都是一样的不依赖于任何对象的接口或对象适配器CORBA 概述CORBA 概述 客户(Client)(对象的)客户访问对象的对象引用 并且调用对象上的操作客户只知道对象的逻辑结构 根据它的接口,并通过调用感受对象的行为尽管一般认为客户是向对象发出请求的程序或进程但是客户只是相对于特定对象而言的,是一个相对概念一个对象的实现可以是其它对象的客户客户客户服务器服务器CORBA 概述对象实现 通过 为 对象实例 定义 数据 和为 对象方法 定义 代码提供 对象的语义 对象可以具有不同的实现方式,包括: 单独的服务器 库 每个方法的程序 封装应

5、用程序 面向对象的数据库 等等 对象实现不依赖于ORB或者客户调用对象的方式对象实现可以 通过 选择Object Adapter达到 选择与ORB相关服务的接口 的 目的对象实现(Object Implementation)对象引用提供在ORB内指定对象时所需要的信息对象引用对于客户和对象实现都是一个位流(opaque)的概念因此客户与对象实现可以与引用的实际表示分离。在选择对象引用表示上,不同的ORB可以有所差别传递给客户的对象引用表示仅在客户的生命期内有效对于一个特定的编程语言,所有的ORB都必须提供对象引用(通常称为对象)的相同语言映射。这就允许用特定语言编写的程序可以在独立于特定ORB

6、的情况下访问对象引用。语言映射也可以提供其它访问对象引用的方式CORBA 概述 对象引用(Object Reference)OMG接口定义语言(OMG IDL)通过 指定 对象接口定义 对象类型接口包括一组已命名的操作和这些操作的参数。IDL 是一个分析设计结果描述ORB操纵的对象 其源代码的存在对ORB正常工作不是必须的在运行时刻,以stub程序或者运行时接口repository的形式 提供等价的信息。通过IDL,特定对象实现告诉它潜在的客户: 什么是有效的操作 以及 如何调用这些操作从IDL定义可以将CORBA对象向 特定编程语言 或者 对象系统映射CORBA 概述OMG接口定义语言int

7、erface Grid readonly 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、对象适配器更主要的用途是定义应用对象!语言映射包括定义特定于语言的数据类型和通过ORB 访问对象的过程接口。它包括: 客户stub接口的结构

8、(面向对象的语言不需要) 动态调用接口 实现骨架 对象适配器和直接ORB接口语言映射也包括对象调用之间以及客户或实现中控制线程 之间的交互。最常见的映射提供同步调用:当对象操作完成时子程序返回编译开关(选项)控制映射具体策略。CORBA 概述 IDL向具体语言的映射CORBA 概述ORB client libraryORB server library编译 IDL:gridS.cpp server skeletongridC.cpp client stubsClientServergrid.h common declarationsgrid.idl所产生的 C+ 头文件(Orbix):clas

9、s Grid : public virtual CORBA:Object public:static Grid_ptr _bind();virtual CORBA:Short height(CORBA:Environmentvirtual CORBA:Short width(CORBA:Environmentvirtual void set(CORBA:Short row, CORBA:Short col,CORBA:Long value, CORBA:Environment virtual CORBA:Long get(CORBA:Short row, CORBA:Short col,COR

10、BA:Environment ;CORBA 概述客户存根(Client stub)由IDL编译器根据IDL文件生成客户访问对象的操作主要方式实现对象位置透明性向非面向对象语言映射时将为每个接口类型产生一个stub编程接口面向对象的编程语言不需要stub接口它通过伪对象的方式提供访问对象的操作。CORBA 概述DII(动态调用接口)客户指定要调用的对象、要执行的操作和调用或调用序列 中操作的参数集,而不是调用特定于特殊对象上特殊操作的 stub 子程序。客户代码必须提供要执行操作的信息和传送参数的类型动态调用接口的特性可能因编程语言映射的不同而不同客户通过静态还是动态接口发出请求 对于对象实现是

11、透明的CORBA 概述CORBA_Create_request(.) CORBA_Request_add_arg(.) CORBA_Request_add_arg(.) CORBA_Request_invoke(.) CORBA_Request_delete(.)实现骨架(Implementation Skeleton)由IDL编译器根据IDL文件生成对象适配器访问对象实现中方法的主要形式对于一种特定映射语言,以及可能的特定对象适配器Skeleton 与 stub 不是必然对应的 客户也可以通过动态调用接口发出请求但也可以编写不使用skeleton调用实现方法的对象适配器CORBA 概述动态骨

12、架接口(DSI)通过一个“提供访问操作名与参数的接口”获得 一个对象的实现实现代码必须向ORB 提供 所有操作参数的描述ORB 提供 任何输入参数的值,以便在执行操作时使用在执行操作后,实现代码向ORB 提供任何输出参数的值或者例外处理适配器通过静态还是动态骨架接口访问对象实现对于客户是透明的CORBA 概述动态骨架与动态调用可以被一起用于创建网关(Gateway)这些网关包括:不同ORB环境之间的网关不同防火墙软件之间的网关 安全网关对象适配器(Object Adaptor)对象适配器是对象实现访问ORB所提供服务的主要方式ORB通过对象适配器提供的服务通常包括: 生成和解释对象引用 方法调

13、用 交互的安全性 对象和实现激活及取消激活 将对象引用映射到实现 注册实现对象粒度、寿命、策略、实现风格等的明显区别 使得 ORB核心很难为所有对象提供方便和有效的单一接口 通过对象适配器 ORB可以将一组特定的对象实现作为目标CORBA 概述接口池(Interface Repository)接口池提供持久对象的服务这些对象在运行时以可用的形式表示IDL信息ORB可以使用接口池信息执行请求,例如: 如果程序在编译时遇到接口未知的对象, 那么使用接口池中的信息可以: 确定对象的有效操作 对它发出调用除了在ORB运行时提供职能外,接口池也是 存储与ORB对象接口相关的其它信息的 公共地点 例如:调

14、试信息 stub或skeleton库形式化或浏览特定对象 等等CORBA 概述实现池(Implementation Repository)实现池包含的信息允许ORB定位和激活对象实现尽管实现池中的大多数信息特定于ORB或者操作系统,但是实现池是习惯上记录这些信息的地点。安装实现和与激活及执行对象实现的策略控制是 通过实现池上的操作完成的除了提供ORB运行时的职能外,实现池也是 存储与ORB对象实现相关的其它信息的 公共地点例如:调试信息 管理控制 资源分配 安全性 等等CORBA 概述(2 2)ORBORB实现方式实现方式 位于客户和对象实现内部的ORB如果有合适的通讯机制,那么ORB 可以在

15、客户和对象实现的程序中实现客户中的stub使用位置透明的IPC机制或者直接访问地点服务建立与实现的通讯与实现关联的代码负责为客户设置合适的数据库(操作定位)CORBA 概述 基于服务器的ORB所有客户和实现可以与一个或多个服务器通讯 服务器的任务是将请求从客户发送到对象实现就底层操作系统而言,ORB可以是普通的程序 并且可以使用普通的IPC与ORB通讯这是主要的ORB实现方式,优点: 客户与服务器目标码大小适度 便于配置CORBA 概述基于系统的ORB为增强安全性、健壮性和性能 可以将ORB作为底层操作系统的基本服务对象引用可以永远不变,从而减少了每次请求时验证的开销由于操作系统可以知道客户和

16、实现的地点及接口 因此可以实现许多不同的优化例如当客户与实现在同一台机器上时,可以省缺编排活动基于库的ORB对于小型、并且其实现可以共享的对象,实现可以在库中CORBA 概述客户在它们的程序中以库子程序的方式 访问 特定对象类型的stub客户程序在它的编程语言中以用普通方式调用该子程序客户将对象引用传送给stub子程序以初始化调用Stub 能够访问对象引用表示,并与ORB交互,以执行调用(3)(3)客户的结构客户的结构CORBA 概述在最常见的情况下,客户通过调用拥有引用的其它对象 并作为输出参数 来获取对象引用 也可以采用从字符串转换的方法:服务器方将对象引用转换为字符串 然后将字符串存储在文件中则客户方可以将它转换回对象引用客户程序的具体表现形式与ORB的实现方式有关不论哪种形式,客户程序由

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号