第五讲CORBA.ppt
《第五讲CORBA.ppt》由会员分享,可在线阅读,更多相关《第五讲CORBA.ppt(75页珍藏版)》请在三一文库上搜索。
1、第 五 讲 CORBA,内 容,一、CORBA概述 二、GIOP-IIOP 三、OMG-IDL,Dynamic Invocation,ORB Interface,Skeleton,Object Adapter,ORB Core,Client,Object Implementation,一、CORBA概述,Common Object Request Broker Architecture 公共对象请求代理结构,Stub,对象请求代理(ORB) 不要求将ORB实现为单独的构件 而仅定义其接口 任何提供正确接口的ORB实现都是可以接受的 ORB的具体实现包括: ORB Core、IDL编译器、IR、
2、Object Adapter ORB可以有多种实现 它们对对象引用有不同的表示方法 并且有不同的调用执行方法,提供对象的基本表示 以及请求的通讯 特别地:编排/还原(Marshal/Unmarshal) 将高层语言的参数等表示转换为 便于底层网络传输的形式,ORB核心(ORB Core),客户(Client) (对象的)客户访问对象的对象引用 并且调用对象上的操作 客户只知道对象的逻辑结构 根据它的接口,并通过调用感受对象的行为 尽管一般认为客户是向对象发出请求的程序或进程 但是客户只是相对于特定对象而言的,是一个相对概念 一个对象的实现可以是其它对象的客户,客户,客户,服务器,服务器,对象实
3、现 通过 为 对象实例 定义 数据 和 为 对象方法 定义 代码 提供 对象的语义 对象可以具有不同的实现方式,包括: 单独的服务器 库 每个方法的程序 封装应用程序 面向对象的数据库 等等 对象实现不依赖于ORB或者客户调用对象的方式 对象实现可以 通过 选择Object Adapter 达到 选择与ORB相关服务的接口 的 目的,对象实现(Object Implementation),指代(Stub) 由IDL编译器根据IDL文件生成 客户访问对象的操作主要方式 实现对象位置透明性 向非面向对象语言映射时 将为每个接口类型产生一个stub编程接口 面向对象的编程语言不需要stub接口 它通
4、过伪对象的方式提供访问对象的操作。,动态接口(Dynamic Invocation) 客户指定要调用的对象、要执行的操作和调用或调用序列 中操作的参数集,而不是调用特定于特殊对象上特殊操作的 stub 子程序。 客户代码必须提供要执行操作的信息和传送参数的类型 动态调用接口的特性可能因编程语言映射的不同而不同 客户通过静态还是动态接口发出请求 对于对象实现是透明的,CORBA_Create_request(.) CORBA_Request_add_arg(.) CORBA_Request_add_arg(.) CORBA_Request_invoke(.) CORBA_Request_dele
5、te(.),骨架(Skeleton) 由IDL编译器根据IDL文件生成 对象适配器访问对象实现中方法的主要形式 对于一种特定映射语言,以及可能的特定对象适配器 Skeleton 与 stub 不是必然对应的 客户也可以通过动态调用接口发出请求 但也可以编写不使用skeleton调用实现方法的对象适配器,对象适配器(Object Adaptor) 对象适配器是 对象实现 访问ORB所提供服务的主要方式 ORB通过对象适配器提供的服务通常包括: 生成和解释对象引用 方法调用 交互的安全性 对象和实现激活及取消激活 将对象引用映射到实现 注册实现 对象粒度、寿命、策略、实现风格等的明显区别 使得 O
6、RB核心很难为所有对象提供方便和有效的单一接口 通过对象适配器 ORB可以将一组特定的对象实现作为目标,ORB Interface,ORB操作 对象引用操作 ORB及OA的初始化,ORB接口是客户与服务器都可能够使用的操作,它不依赖于任何特定的对象适配器和对象引用 所提供的主要功能(操作)包括:,因为 对象引用是不透明的 而且各ORB之间不一样 所以 对于对象引用的长期存储 或 对象引用的通信(除激活之外)来说 对象引用不是一个很方便的值 因而必须解决两个问题: 允许对象引用转换成 一个客户可以存储在其他介质上的值 并确保该值以后能够转换为正确的对象引用,ORB操作:对象引用与字符串的转换,可
7、以通过object_to_string操作 把一个对象引用转化为一个字符串 该字符串值就可以以任何字符串所能被处理的方式 进行存储或通信 string_to_object操作 接受由object_to_string产生的字符串 并返回相应的对象引用,对象引用操作 有一些操作可以在所有对象上进行 它们并不是通常意义上的操作 因为 这些操作直接由ORB实现 而并不传递到对象实现端 我们将以在对象引用上的操作的方式 来讨论这些操作 尽管它们的接口实际上依赖于语言绑定,interface Object / PIDL InterfaceDef get_interface (); boolean is_n
8、il(); Object duplicate (); void release (); boolean is_a (in string logical_type_id); boolean non_existent(); boolean is_equivalent (in Object other_object); unsigned long hash(in unsigned long maximum); ,这样的操作包括:,ORB与OA初始化 当应用程序要求CORBA环境时 它需要一种获得ORB和OA对象引用的机制 这样的机制有两个作用: 把应用程序初始化到ORB和OA环境 向应用程序返回OR
9、B和OA对象引用 以便将来使用ORB和OA操作,2、ORB实现方式,位于客户和对象实现内部的ORB 如果有合适的通讯机制,那么ORB 可以 在客户和对象实现的程序中实现 客户中的stub使用位置透明的IPC机制或者直接访问地点服务 建立与实现的通讯 与实现关联的代码负责为客户设置合适的数据库(操作定位),基于服务器的ORB 所有客户和实现可以与一个或多个服务器通讯 服务器的任务是将请求从客户发送到对象实现 就底层操作系统而言,ORB可以是普通的程序 并且可以使用普通的IPC与ORB通讯 这是主要的ORB实现方式,优点: 客户与服务器目标码大小适度 便于配置,基于系统的ORB 为增强安全性、健壮
10、性和性能 可以将ORB作为底层操作系统的基本服务 对象引用可以永远不变,从而减少了每次请求时验证的开销 由于操作系统可以知道客户和实现的地点及接口 因此可以实现许多不同的优化 例如当客户与实现在同一台机器上时,可以省缺编排活动 基于库的ORB 对于小型、并且其实现可以共享的对象,实现可以在库中,二、GIOP-IIOP,1、GIOP概述 2、CDR 3、GIOP消息格式 4、IIOP 5、IIOP IOR,1、 GIOP概述,公共数据表示 GIOP消息格式,GIOP包含的要素:,目前已经被广泛地采纳 经被ISO组织采纳,成为一种工业标准 (ISO/IEC 19500-2),公共数据表示,CDR(
11、Common Data Representation)是传输语法 它将用OMG IDL定义的数据类型映射到 双向的低层表示 以便在代理之间 进行传输,少量、简单消息 仅仅用八个消息格式 GIOP就可以 支持ORB之间的全部CORBA功能 以及 支持对象地点服务的 扩展功能 动态迁移 和 对通讯资源的管理 GIOP语义不要求格式或绑定协议 在大多数情况下 客户可以在打开连接后立即向对象发送请求,GIOP消息特点,动态对象定位 许多ORB的体系结构 允许 对象实现在其生命期内 在不同地点 被激活 并且 允许动态迁移对象 GIOP消息为对象定位和迁移提供支持 但在不需要或不适合ORB的体系结构时 不
12、要求ORB实现这样的机制,完全的CORBA支持 GIOP消息直接支持CORBA要求的所有功能和行为 包括例外情况报告、传送操作环境和远程对象引用操作 (例如CORBA:Object:get_interface) GIOP支持传送特定于服务的环境 例如由事务服务定义的事务环境 该机制的设计目的是 支持要求在请求中隐式传送与服务相关环境的任何服务,2、 公共数据表示(CDR),CDR有如下功能: 可变的字节次序 有相同字节次序的机器 可以在不进行字节交换的情况下进行消息交换 当与字节次序不同的机器进行通讯时 消息发起者决定消息字节次序 接收者负责交换字节以便匹配它的本地次序 每个GIOP消息(以及
13、CDR封装)包含 指出正确字节次序的标记,对齐的主类型 在GIOP消息内基本OMG IDL数据类型 在它们的自然边界对齐 这样强制在内存中进行数据对齐的体系结构 可以有效地处理它们 完整的OMG IDL映射 CDR描述所有OMG IDL数据类型 (包括可传输的伪对象,例如TypeCode)的表示 如果需要,CDR为CORBA Core规范中 表示未定义或与实现有关的数据类型定义表示方法,对齐:,OMG IDL 原始数据类型的对齐要求,字节顺序:,MSB,大结尾(Big-Endian),小结尾(Little-Endian),LSB,MSB,LSB,short,long,MSB,LSB,LSB,M
14、SB,long long,MSB,LSB,LSB,MSB,0,0,0,0,0,0,1,1,3,3,7,7,3、 GIOP 消息格式(1.2版),GIOP消息类型(8类),GIOP头,消息头,消息体,GIOP消息格式:,struct MessageHeader char magic 4; /4字节 Version GIOP_version; /2字节 Octec flags; /1字节 octet message_type; /1字节 unsigned long message_size; /4字节 ;,(0) GIOP消息头,Magic:标识GIOP消息,其值一致为:“GIOP”,GIOP_v
15、ersion: 消息使用的GIOP的版本号 主版本号为1,副版本号为2,长12个字节,Flags是一个8位字节 最低第一位指示消息后续元素的字节顺序 最低第二位指示是否有更多的后续段,message_type指示消息的类型,message_size指示消息中消息头后跟着的字节数 不包含12字节的消息头,(1)请求消息(Request),GIOP消息头 请求消息头 请求消息体,struct RequestHeader_1_2 unsigned long request_id; octet response_flags; octet reserved3; TargetAddress target;
16、 string operation; IOP:ServiceContextList service_context; ;,包含元素:,请求消息头格式:,request_id: 用于将应答消息与请求消息相关联 response_flags:如果请求期待一个应答消息, 则response_flags的最低位置为1 reserved3:保留 Target:标识被调用的目标对象(与IOR密切相关) Operation:被调用操作的IDL标识符。 service_context:包含需要从客户端传送到服务器 端的上下文信息 它被作为一个“隐藏”的参数传递,请求消息体被编排为CDR,并紧接在请求消息头之后
17、 由IDL定义的操作: Double example(in short m, out string str, inout Principal p); 请求消息体等价于结构: struct example_body short m; Principal p; ,(2)应答消息(Reply),GIOP消息头 应答消息头 应答消息体,包含元素:,struct ReplyHeader_1_2 unsigned long request_id; ReplyStatusType_1_2 reply_status; IOP:ServiceContextList service_context; ;,应答消息
18、头格式:,request_id: 用于将应答消息与请求消息相关联 它包含与相应请求相同的request_id值 reply_status:指示相关联的请求的完成状态,而且决定了应答消息体的部分内容。 完成状态包括: NO_EXCEPTION USER_EXCEPTION SYSTEM_EXCEPTION LOCATION_FORWARD LOCATION_FORWARD_PERM NEEDS_ADDRESSING_MODE service_context:包含需要从服务器端传送到客户端的 上下文信息,应答消息体被编排为CDR,并紧接在应答消息头之后 由IDL定义的操作: Double exam
19、ple(in short m, out string str, inout Principal p); 的应答消息体等价于结构: struct example_body double return_value; string str; Principal p; ,GIOP消息头 撤消请求消息头,(3)撤消请求消息(CancelRequest),包含元素:,struct CancelRequestHeader unsigned long request_id; ;,撤消请求消息头格式:,(4)定位请求消息(LocateRequest),包含元素:,GIOP消息头 定位请求消息头,定位请求消息头格
20、式: struct LocateRequestHeader_1_2 unsigned long request_id; TargetAddress target; ;,(5)定位应答消息(LocateReply),包含元素:,GIOP消息头 定位应答消息头 定位应答消息体,定位应答消息头格式:,struct LocateReplyHeader_1_2 unsigned long request_id; LocateStatusType_1_2 locate_status; ;,(6)关闭连接消息(CloseConnection),(7)消息错误消息(MessageError),(8)分段消息(
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第五 CORBA
链接地址:https://www.31doc.com/p-3122787.html