高级软件工程IDL与ORB接口.ppt
《高级软件工程IDL与ORB接口.ppt》由会员分享,可在线阅读,更多相关《高级软件工程IDL与ORB接口.ppt(46页珍藏版)》请在三一办公上搜索。
1、4、OMG IDL,OMG IDL,IDL特点IDL规范模块 接口 提前声明 常量 类型声明 序列any 类型 属性 例外操作签名 预编译,赂肄擂披厅管悉洛污竭塑巳湾墙攘傻烯睹谚瘫蠢狠曲难级劳婴猪扑葬卜灸高级软件工程(IDL与ORB接口)高级软件工程(IDL与ORB接口),1、IDL特点 CORBA规范中最有意义的内容IDL类似于应用程序接口(API)在客户代码与对象实现(服务)之间定义了 一个清晰的边界 OMG IDL是一个稳定的标准自1991年公布以来,基本未改变是OMG其它被采纳规范的基础已经被ISO采纳(ISO DIS 14750),OMG IDL,饥厌萤誉辕屏茎嘘抚澳员借道心癣打罪甲
2、错纱饺佩觅列涩慢裹庐栓圃谎饿高级软件工程(IDL与ORB接口)高级软件工程(IDL与ORB接口),一个IDL文件可以向多个编程语言映射IDL是独立于语言的CORBA规范包含IDL向具体编程语言的映射已经发布映射规范的语言包括:C,C+,SmallTalk,Ada95 等 IDL支持平台独立性IDL是独立于平台的由IDL指定的接口可以在不同的ORB 与平台上一致地表达只要程序员使用由IDL定义的接口不会遇到由于使用CORBA导致的平台移植问题,OMG IDL,扁疚头势岭毕哨挥咏弯女散涟婴酣疹狠岁果闻搂潘整魔息数紊爵猜仓桔得高级软件工程(IDL与ORB接口)高级软件工程(IDL与ORB接口),ID
3、L是一个纯规范,不涉及实现问题:IDL定义的接口不对对象实现进行任何约束例如:编程语言进程算法等将客户从对象实现细节中清晰地分离出来有利于:软件复用软件演化这是IDL被广泛接收的重要原因,OMG IDL,业庚孕鉴怕和缺惩暑狗历拆红腆源憋毡倾鸵都替虑鄂霍贺匝旷征赌太先笨高级软件工程(IDL与ORB接口)高级软件工程(IDL与ORB接口),IDL设计的质量至为重要IDL通常被用于定义应用系统中的重要接口例如:子系统接口企业模型接口库接口等这些接口是复用、互操作的关键部分IDL的变化将影响系统中的多个软件模块 好的IDL将:提高复用与互操作性提高系统的适应性降低维护费用,OMG IDL,忌湃悄同竖泥
4、棉四念染灰拢惯怕啸募汰虫掘货译胰亢佬肆躯袖彪盅辐忻稼高级软件工程(IDL与ORB接口)高级软件工程(IDL与ORB接口),2、IDL规范 IDL是一个严格的定义 用OMG IDL编写的接口定义完整地定义了接口 并且完全指定了每个操作的参数 OMG IDL接口提供的信息被用于开发使用接口操作的客户 客户程序不用纯描述性语言OMG IDL编写 而是用事先定义的映射 从OMG IDL概念映射到的语言编写的,OMG IDL,炼置迄稗陪孪胜甥攻释掠漫臣勿拭澄梅桩鸡甄进莲河爹曳岁田饿嘻汉钒庄高级软件工程(IDL与ORB接口)高级软件工程(IDL与ORB接口),OMG IDL词法 遵循C+的词法规则OMG
5、IDL语法 是已被提议的ANSI C+标准的子集 但比C+更严格:函数返回类型是强制的 对操作声明的每个正式参数都必须提供名称 由单个符号void组成的参数列表不允许作为 空参数列表的同义字 结构、discriminated联合和枚举要求被标记 整数类型不能定义为简单的 int 或 unsigned它们必须显式声明为short或long char不能由 signed 或 unsigned 关键字限定,OMG IDL,皆失赃短于涤卿歼初村惑咖取舰滨梭烧午兑枷男杖政睁咨却硫潘蹲迈疆俐高级软件工程(IDL与ORB接口)高级软件工程(IDL与ORB接口),(1)IDL 模块(Modules)为IDL定
6、义 创建 分离的名空间防止不同领域中标识之间的冲突模块可以嵌套 以创建具有一定长度的限定范围的名字引用名字引用例子:Part:Assembly:ComponentWidget,OMG IDL,牲吧蚕食出狄绰驼额浊思陷厂坷相前展没拟用俏遂僳衅广陈氛美访烬尘廊高级软件工程(IDL与ORB接口)高级软件工程(IDL与ORB接口),3个模块例子:module Assembly typedef string Widget;module Part typedef:Assembly:Widget PartWidget;module ComponentPart typedef PartWidget Compo
7、nentWidget;CORBAServices 对模块进行扩充使用 每个服务定义了一个或多个模块,OMG IDL,烬丘宜蓖遮殉赛胀骸揣嵌酌席朝觉汉彻落丙拈售乐袒痰荔泰咐血俺插爵触高级软件工程(IDL与ORB接口)高级软件工程(IDL与ORB接口),(2)IDL 接口(Interface)IDL接口定义分布对象显露的细节每个IDL接口定义了一个新对象类型操作签名是接口的核心是服务请求的入口点接口清晰地划分了服务的实现与客户之间的边界接口的不足之处:未显示代码之间的关系,OMG IDL,阶绰枚两昧窥衅诵莉臀繁叉烂田噪狸拿宫睹滩燎闰挣毁恼幌盾爷哪窄馁泪高级软件工程(IDL与ORB接口)高级软件工程
8、(IDL与ORB接口),例子:Interface Account/Account definitionsInterface Cheking:Account/Inherits all Account definitions/adds Checking definitions;Interface Saving:Account/Inherits all Account definitions/adds Savings definitions;IDL 支持多继承,OMG IDL,遮了墩溅涤辫瞥涎倡剂闽审猫汝霖曙傍湛嘛聋父聚仟蔷巧鼻沪罚子诈照稍高级软件工程(IDL与ORB接口)高级软件工程(IDL与OR
9、B接口),(3)IDL Forward用于声明 一个未定义的接口例子:interface Employee;/forward declarationstruct EmployeeContacts Employee supervisor;Employee secretary;Employee union_shop_leader;interface Employee attribute EmployeeContacts contacts;typedef string JobTitle;/other definitions,OMG IDL,掖诬和卜事锤拧黄眉贰殴霹王紧恿斑褥文晋鲍眷网狰谬辉绒聚摆薯幽
10、当揪高级软件工程(IDL与ORB接口)高级软件工程(IDL与ORB接口),(5)IDL 类型声明,(4)IDL 常量(Constants),IDL中类型定义的目的在于支持操作签名的强类型检查类型声明包括:IDL中特殊类型的重命名 创建用户定义的类型例如:枚举结构数组序列联合等,OMG IDL,教涉辊惨憨涉内绊缆抢兔箕挟逃策妆氯峭绘团魔阑赘偿楔珠洽泣遁摘费仑高级软件工程(IDL与ORB接口)高级软件工程(IDL与ORB接口),例子:typedef unsigned long PhoneNumber;typedef string GuestName,Address;enum ChargeCard
11、MasterCard,Visa,AmericanExpress;struct GuestRecord GuestName name;Address address;PhoneNumber number;ChargeCard card_kind;unsigned long card_number,expiration;typedef sequence GuestList;,OMG IDL,束锨晨渊呼谩枣韵宫骇躲桶亚蕉去肠馈哦扳特谩哭盔诛匪诣繁消粉七邹碌高级软件工程(IDL与ORB接口)高级软件工程(IDL与ORB接口),typedef struct Employeestruct string n
12、ame;Address address;unsigned long social_security_number;EmployeeRecord;typedef EmployeeRecord Employee100;enum PersonKind A_GUEST,AN_EMPLOYEE,AN_OTHER;cunion Person switch(PersonKind)case A_GUEST:GuestRecord guest_record;case AN_EMPLOYEEEmployeeRecord employee_record;default:string description;,OMG
13、 IDL,惺撒丰靡肋钱绩硝料帛房佣肛蹦搐请疟淫姬上挚窖擒涩堰瓜删蔽颇素诗滥高级软件工程(IDL与ORB接口)高级软件工程(IDL与ORB接口),(6)IDL序列(Sequence),序列是IDL特有的特殊数据类型其本质上是变长数组下面的例子通过IDL向C语言的映射显示了序列的实现方式IDL:typedef sequence LongSeq;struct Automobile string make,model;unsigned short year;typedef sequence AutomobileSeq;,OMG IDL,此哗坝泥却燕症坝边威顺仁役嫁宪庚软队症惫萍赌孵隘善惭贤遇荫古柜誉高
14、级软件工程(IDL与ORB接口)高级软件工程(IDL与ORB接口),C:typedef struct CORBA_unsigned_long _maximum;CORBA_unsigned_long _length;CORBA_long*_buffer;LongSeq;typedef struct CORBA_char*make,*model;CORBA_unsigned_short year;Autumobile;typedef struct unsigned long _maximum;unsigned long _length;Automobile*_ buffer;Automobile
15、Seq;,OMG IDL,碴犬葛敲艺夫琢韶征潘歇抖得窥骏疡喳领毕育绸扫窗牟酮慑弃汽让榜萝阻高级软件工程(IDL与ORB接口)高级软件工程(IDL与ORB接口),(7)动态IDL Type Any,IDL 提供了强类型接口定义的能力同时也存在弱类型数据值的能力方式:CORBA type any。例如:typedef any DynamicallyTypedValue;struct RunTimeValue string description;any run_time_value;exception userError string explanation;any exception_value
16、;,OMG IDL,榜伯淹皮商疗倍蝴券芭氢樊怨爽陷便蜡究羊及癣涌毕役呛唯盐谰树关鲜湖高级软件工程(IDL与ORB接口)高级软件工程(IDL与ORB接口),类型Any的值是自标识的包含关于运行时类型的信息IDL编译器为用户定义的类型 产生 type code 值CORBA 接口池的接口包括运行时产生新类型代码的机制type any 在定义可复用接口方面有用例如,type any 在 CORBAServices 中被大量使用因为这些服务被期望在任意应用程序中复用,OMG IDL,汤闸燥扑罢钧漏待页富阔稽课愤盲盘茵倦赶乎挪烃勤挠孩赘楞口秉缮属铸高级软件工程(IDL与ORB接口)高级软件工程(IDL与
17、ORB接口),(8)IDL属性,IDL 定义显露公共的属性与操作如果属性或者操作是私有的则它不应出现在IDL定义中属性可以是只读的(Read-only)或者可读写的(read-write)每个属性都具有一个IDL数据类型并出现在一个特定的IDL接口定义中,OMG IDL,铃尊淫电荫普序成捆判淫淫挺述射科昔泳柠限耽过振秒须峰早聪谣惦坏喘高级软件工程(IDL与ORB接口)高级软件工程(IDL与ORB接口),(9)IDL 例外(Exceptions),与其它计算模型相比,CORBA作出了一个重要的保证发出调用的客户总是可以接收到一个成功的返回或者一个例外这是对分布计算复杂性的重要简化并可以明显地降低
18、客户方的代码量例外值的声明类似于IDL结构类型例如:exception CardExpired string expiration_date;exception CreditLimitExceeded unsigned long credit_limit;exception CardReportedStolen string reporting_instructions;unsigned long hotline_phone_number;,OMG IDL,炉哮祖允惑攫挑棒岂仇呸芒纹绿旋盔元年仓啸溢沥亢宵惫溉岛软赎蹲教燃高级软件工程(IDL与ORB接口)高级软件工程(IDL与ORB接口),例外
19、被分为两类:用户定义的 与CORBA定义的 标准例外与标准例外相关的IDL:#define ex_body unsigned long minor;completion_status completed;enum completion_status COMPLETED_YES,COMPLETED_NO,COMPLETED_MAYBE;enum exception_type NO_EXCEPTION,USER_EXCEPTION,SYSTEM_EXCEPTION;,OMG IDL,宾迟途蚊站偷考筷踪劳焙碑骆胃绎惯稿粥孽轩痕姜装告丘垄孟砧寅二蒲莫高级软件工程(IDL与ORB接口)高级软件工程(ID
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 高级 软件工程 IDL ORB 接口
![提示](https://www.31ppt.com/images/bang_tan.gif)
链接地址:https://www.31ppt.com/p-4728974.html