CORBA整理笔记概要_第1页
CORBA整理笔记概要_第2页
CORBA整理笔记概要_第3页
CORBA整理笔记概要_第4页
CORBA整理笔记概要_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1、CORBA的用途:Internet是计算机联接起来,CORBA则使应用软件联接起来。2、CORBA采用的技术:( 1 )面向对象技术( 2 )分布式计算机模型(3)多层体系结构:客户层、中间层(CORBA)、资源层( 4 )接口技术3、CORBA概述:(CORBA的最终目的就是分布式软件集成)由以下形成的:( 1 )对象请求代理(ORB)(2) CORBA®务:对象生存期服务对象关系服务对象命名服务屏幕剪辑的捕获时间: 2012-04-26 17:21屏幕剪辑的捕获时间: 2012-04-28 8:45持续对象服务对象外化服务事件服务对象查询服务对象属性服务并行服务许可服务对象洽

2、谈服务对象安全服务对象时间服务对象包容服务对象启动服务(3) CORBAT具集横向工具集:用户界面信息管理系统管理任务管理纵向工具集:医疗保健金融服务电讯电子商务制造任何功能强大、运行便利的CORBA对象都可以成为CORBA工具集中的候选对象,甚至是CORBA工具集中的名牌对象。(4)符合CORBA标准的各种应用程序、对象(客户和对象实现)CORBA接口及接口定义IDL1、CORBA是一种以ORB为中间件的伪客户/服务器方式,CORBA灵活的伪客户/服务器方式归功于IDL2、CORBA中的接口:CORBA中至少应该存在三组对象:CORBA客户对象、ORB对象(接口存根IDLStub,接口框架

3、IDL Skeleton) , CORBA寸象实现可选插勺QK昭可选择芍匚5(限1' COiitt叮卷择勺 CDRiiA 客户对黄H可就死:勺硝ft女晚n(1) CORBA接口中g架IDL Skeleton:把CORBAM象实现和 ORB连接起来,主要 包括一些函数的调用代码。(2) CORBA接口存根IDL Skeleton:用来连接 CORBA寸象和 ORB主要包括一些 函数的声明。3、OMG IDL 扼要(1) IDL编写CORBA接口的一些基本原则:龈个月OMG IDL语言承写住插ZIHFk做ATM IDL7 module ATMtypedef slrirg Accountst

4、ypedef unsigned long Password: tvpedef Iona Mon&erfacfi nputK'ftdin-lypflder uiiignHd aloct Oss-atarCmd,void oper0tion_iripul(in OperatorCnxi ksy;void pBM*ord_input(in Password number);void nnn4L_Bmounl_inputtin Money 日mount););interface OttpulMte'dliafboolean output lextfin firing

5、siring 8Q_print);卜interface ATMTerminlfvoid exiT();boolean 帅e Accounts NO,mnumbaf,n nvQynl k bcoktan changB_passWiDrd:( in Accounte MO in PbbswchtO oidnumfter, in PaaBJ*&rd 仲看隔 nunnber )wdin Accounls NO.m Psss*CTd fiuTfuberUi Money surpiua):End prtnt_:DpeTat on_fcg£), booteBn chigckrardO;?

6、注释方式与C+、Java完全相同? 可以把相关的一组对象定义在同一个模块中module模块名模块内容。? 必须为每一个参数指明类型? 基本类型:long, short, unsigned long , unsigned short, float, double , char, boolean , octet , any? 构造数据类型:struct, union , enum , sequence, string? 任何声明都有一定的作用域? 关键字interface用来定义一个具体对象及其接口? 操作的声明类似 C+,包括返回类型、函数名称、参数列表三个部分? 必须为操作中的每一个参数指明方

7、向属性? 类型声明符号typedef的用法和C+中完全一样? 每条语句后面都有分号(2)用IDL定义属性及只读属性? 属性用attribute定义? 只读属性用readonly attribute定义(3)用IDL定于构造数据类型?枚举类型:enum DAYMON,TUE,WED,THUFRI,SAT,SUN;?结构体:struct ATMLocationstring city;string blocks ;unsigned short number ;? 一维序列:typedef sequence<ATMLocation> arr;?联合体:union(4)用IDL定义继承、多重

8、继承及跨模块继承? 单继承 人"。上。01占2 didhlrtrbMin bLnnq iw喷 dddrtfb&h).?多重继承?跨模块继承MINI多哈比/噌上言货关空通nwdul» Moduli imerfacfl 日alnbuLe org property 1 OK11;mgc*Lil*i Mod幅interface 吧阳ECe1aEinbute long prapB*ty2.void operwiion2 E)qinl«rf«a; Mcndulvli.二1用 IDL定义异常: exception , raises(6)用IDL定义上下文对象:

9、context?如果此方法既有 context定义又有定义异常raises,则raises应放在context 之前。"SEWS*niDdule CommodityamS® *触福/ " inliarfa ce Pe rson直立m用I科rud Person Dai&ifitnirig narnft:;SEX 百蜕.type;Unsigned short age5tm“ address;;interface C ! PersoiXwnidgMg d H»ni a nu"ibarinMrir>g 僮闫僧 nurnba*);.); -

10、 -inierface Pera,3n(readonly attribute PersonDsta data;(7)用IDL定义单向请求:oneway是异步请求的一种需要看的两个重大问题:动态激发方式和orb 之间的通信方式四、通过ORB动态激发方式:(1) orb 客户端透视:?接口存根IDL Stub,用于静态激发请求?动态激发接口 DII,用于动态激发请求? orb接口,用于调用CORBA伪对象有关的操作?接口仓库IR,从中可以获得IDL接口的详细信息(2) corba 的动态激发? 动态激发是通过动态激发接口 DII 实现的。? SII和DII的区别:? SII在编译时进行对象类型匹配

11、和操作选择,DII则对象类型匹配和操作选择推迟到了 执行的 时刻。 所以, 使用 DII 方式是,应该格外注意 异常处理 。?采用SII请求服务时,除非函数被声明为 oneway , 一般情况下采取同 步通信方式 ,而采用 DII 请求服务时, DII 提供了同步和异步通信的 两种方式(三)动态激发接口 DII:由以下三部分例程构成:? 请求管理例程。? 各种异步通信例程。? 列表管理例程。通过这些例程,可以按如下步骤建立动态请求:? 确定需要采用动态请求去实现的服务和服务提供对象? 动态获取对象的接口信息? 构造请求伪对象? 激发请求伪对象、接受响应1 、定位服务及服务提供对象(对象洽谈服务

12、)2、提取对象实现的接口信息:对于一个对象实例而言,只要客户发出的请求符合 OMG IDL 的接口定义 ,都会接受请求。? 在SII中,接口定义从 接口存根IDL Stub中获得? 在 DII 中,接口定义从接口仓库IR 中获得3 、参数列表NVList 及“值-名体”NamedValue操作参数表可以通过三种方式建立:? 自动建立参数表,调用伪对象 ORB 的函数 create_operation_list, 自动建立一个参数列表。这个列表一次建立成功 ,包括参数的名称、类型及方向属性。? 逐步建立参数列表,调用伪对象 Request 的函数 add_arg ,每次添加一个参数的 名称、类型

13、、方向属性及具体取值。?手动建立参数列表,直接调用伪对象ORB的列表操作函数create_list,手控 生成参数列表,包括参数的名称、类型及方向属性。无论采用哪种方式,参数表都被记录在一个被定义为伪对象NVList类型的列表中,该列表中的每个元素是一个“值-名体”(NamedValue),表示与操作中某个参数相关的各种信息。”这个例子是“值-名体"一一Wmkglue的定义 typedef unsigned long Flags;struct NamedValue Identifier name; EguEmnt name any argument; / argument long

14、len; / length/count of argument value Flags arg modes:/ argument mode flags; -4、对于建立参数表的三种不同方式,用户构造请求的步骤也有所区别? 如果是自动建立参数列表方式,用户还需要为每个参数赋予具体取值,然 后再构造请求伪对象。? 如果是逐步建立参数列表方式,用户首先应该构造好一个不含任何参数项 的请求伪对象,再逐步添加参数直到符合接口规定。? 如果是手动建立参数列表的方式,用户也需要为每个参数赋予具体取值, 然后再构造请求伪对象。(1)自动建立参数列表构造请求:? 首先,伪对象 ORB调用creat_operat

15、ion_list方法自动建立参数列表 (oper从接口仓库里获取)interface ORBStatus cr&ate_cperationliin Op eration Def open?out NVList new list): -?然后,通过调用上面的方法生成一个类型为NVList的new_list,里面保存 NamedVaule?随后,客户程序可以为每个参数赋值。?最后我们调用伪对象 ORB中的请求构造函数 create_request构造出可 以被动态激发的请求伪对象。Status create_request(in Context ctx,in Identifier ope

16、ration, in NVList arg listinout NarredValue result, out Request request in Flags rq_flags,屏幕剪辑的捕获时间:2012/2/13 21:29采用自动建立参数列表方式构造请求的步骤可以概括为:获得服务提供者的对象引用一一获得IR中“操作定义对象”的对象引用一一自动建立参数列表一一赋值一一构造请求(2)逐步建立参数列表构造请求的步骤:获得服务提供者的对象引用一一构造请求 一一»赋值一一逐步建立参数列表这种方式可以不依赖接口仓库IRinterface Request(Status add_arg(in

17、 Identifier nametin TypeCode arg_type, in void * value, in long ten, in Flags arg_flags);Status delete。;5、伪对象 TypeCode6、手动建立参数列表方式构造请求的步骤:获得服务提供者的对象引用一一手动建立参数列表(调用伪对象的orb的create_list-法)赋值构造请求这种方式也不必依赖接口仓库IR对于请求伪对象,我们又可以采取同步通信、异步通信、单向通信 三种方式激发7、8、9、同步激发动态请求:调用请求为对象 Request的invoke函数异步激发动态请求:? 调用请求对象 R

18、equest的send函数?通过调用请求对象的 get_response函数知道被激发的请求完成与否 还是发生异常? send_multiple_requests 发送多个请求, get_next_response 知道被激 发的这些请求完成与否还是发生异常单向激发动态请求? 一种方式是用oneway定义? 还有一种方式是设置 send和send_multiple_requests函数设置 invoke_flags 为 INV_NO_RESPONSE(四)接口仓库IR(五)对象引用初始化五:通过ORB调度对象实现:对象适配器、实现仓库、动态框架接口、接口框架A 4 i510rl/IAdaptor时靠诘求我毋口 FiEITferfsM R(nn*t"FCORBA 加ta空口引LImptemeHtrf m R档内或 ry啃疗q mi "b用±1 CRR伺京百意窗(一)对象适配器(OA?基本对象适配器(BOA)?实际上也是一个corba伪对象,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论