分享
 
 
 

OMG IDL语法规则及ORB

王朝other·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

OMG IDL语法规则及ORB

(本文转载自软件工程专家网www.21cmm.com

苏洋

9. 接口的继承

与C++和Java中类的继承类似,OMG IDL中关于接口的继承分为两种类型:

● 单继承: 一个接口继承另一个接口的属性及方法特征;

● 多继承: 一个接口继承两个或两个以上接口的属性及方法特征。

用继承关系编写接口定义时,如果在接口定义之前该接口的父接口没有定义,则需要在定义接口之前先声明父接口,即所谓的前置声明(Forward Declaration)。下面举例说明接口继承。

在前一讲中,曾定义了人力资源管理接口JobManager,由于实际需要,还要根据该接口定义资源服务接口,而该接口应继承管理接口的特征。因此,以管理接口为父对象定义新的接口JobServer:

interface JobServer : JobManager

{ void MailToManager( in long ManagerId, out string status); }

JobServer : JobManager表明接口JobServer继承JobManager的对象特征。

上例中仅说明了单继承类型,多继承需要用逗号将被继承的类分开,如:

interface JobCenter : JobServer,JobManager { }

10. 异常处理(Exception)

与C++和Java的语法规则类似,CORBA同样提供了异常处理机制,称为“引发异常”(Raising an Exception)。CORBA本身定义了一部分由调用请求或ORB传递引发的异常,称为系统异常(有关CORBA系统异常请查阅相关资料)。因此,在OMG IDL中定义的异常通常称为“自定义异常”。

OMG IDL中用Exception关键字定义用户异常,在定义的方法后面加上raise关键字来声明,如果符合异常的触发条件,则引发定义类型的异常。如下例所示:

enum ErrorStatus {Fatal,Important,Slight,NoMeaning};

Exception ReasonOfMail

{ ErrorStatus status; }

interface JobManager

{ string QueryJobStatus( in long Number, out string property)

raises (ReasonOfMail);}

11.定义方法传递的上下文

在前面几讲中,曾提到过上下文,上下文在接口定义的方法中是如何传递的呢?上下文对象中包括一个称为特征名-特征值的名值对,在方法中使用context关键字定义。ORB在每次客户机发出调用请求时,在对象实现中匹配特征值。如下例所示:

string QueryJobStatus( in long Number, out string property)

raise(ReasonOfMail) context(“who”);

按照以上定义,执行QueryJobStatus方法时,ORB在服务对象实现端的上下文序列中匹配特征名为“who”的特征值。

ORB互操作体系结构

ORB的互操作性(InterOperability)体现在分布于网络中的多个对象借助Internet ORB间协议(IIOP)和通用ORB间协议(GIOP),达到不同厂商ORB之间操作的一致性。

具体来说,ORB互操作是指对于两个独立开发的ORB,一个ORB中的客户端应用可以调用在另外一个ORB中利用OMG IDL定义的服务对象实现的方法。实现互操作的基本条件有:

● 多厂商ORB之间不需要预先知道对方的实现细节;

● 每个ORB必须实现其规范中定义的全部内容;

● 保留每个ORB独立服务的实现。

ORB间互操作能力的实现,极大地丰富了分布式程序设计思想的内涵,使得构建基于整个互联网的分布式应用成为可能。

通过在CORBA中引入内联桥接(In-line Bridging)和请求级桥接(Request-level Bridging), 使ORB在不需要了解对方ORB实现细节的情况下,就可以实现ORB间的互操作。

上面两种ORB间的桥接方式只是说明了ORB间相互发送请求时的虚拟连接方式。为了实现ORB间的通信,在CORBA规范中定义了两种用于在不同厂商ORB间进行通信的协议,即通用ORB间互操作协议(General Inter_ORB Protocol ,GIOP)和环境相关的ORB间互操作协议(Environment-Specific Inter-ORB Protocol,ESIOP)。这两种协议屏蔽了操作系统类型、实现语言以及具体厂商等因素。只要ORB支持该协议,就能够在不同的ORB之间实现通信。

1.通用ORB间互操作协议(GIOP)

CORBA中定义的一种面向连接的互操作协议为通用ORB间互操作协议(General Inter_ORB Protocol ,GIOP)。在CORBA规范中,该协议只是一个框架,给用户在具体实现过程中留下了充足的空间。GIOP规范包括如下内容:

● 公共数据表示(Common Data Representation,CDR)的定义:该数据定义用于将OMG IDL数据类型映射为ORB之间的桥接(Bridge)可以理解的二进制数据类型。

● GIOP消息:在CORBA规范中定义了用于实现ORB之间通信的七种类型的消息,它们分别是: 请求(Request)、响应(Reply)、请求取消(RequestCancel)、请求定位(LocateRequest)、响应定位(LocateReply)、连接关闭(CloseConnection)和消息错误(MessageError)。

通过定义这些消息,使得除了能够在不同的ORB间支持CORBA规范中定义的全部功能外,还能够支持对象实现的定位、对象的动态激活和通信资源的动态管理。

● GIOP消息传递: GIOP消息传递用于规范在网络中传递应用数据和GIOP消息的方式。GIOP消息传递具有如下特点:面向连接,保持字节流的传输顺序,确保可靠传输,传输内容的长度无关,达到TCP/IP协议规范的初始化性能等。

GIOP互操作协议规范了在网络中实现ORB互操作的方式。GIOP协议还有相对于具体的网络协议类型的镜像,最典型的就是GIOP在TCP/IP协议中的实现: 基于Internet的ORB间协议(Internet Inter-ORB Protocol,IIOP)。IIOP规范继承了GIOP规范的全部内容,并且增加了如下要素:

● 打开TCP/IP连接的方式;

● 利用连接实现GIOP消息传递的方式。

可以这样理解IIOP协议:在遵守GIOP中关于公共数据表示和消息格式定义的前提下,以TCP/IP协议为实现蓝本,具体化GIOP消息的传递方式。

2.环境相关的ORB互操作协议

CORBA规范中定义的另外一种ORB间的互操作协议是环境相关的ORB间互操作协议(Environment-Specific Inter-ORB Protocol,ESIOP),该协议规范了在具体的应用环境中实现ORB间互操作的方式。由于该协议与分布式应用环境有着密切的关系,使得该协议在不同的实现和应用方式方面具有较大的变化,因此称基于ESIOP的特定环境协议为环境相关的ORB互操作协议族。

ESIOP协议中最具代表性的、同时也是在CORBA规范中明确说明了的是分布式计算环境中公共ORB互操作协议(Distributed Computing Environment Common Inter-ORB Protocol,DCE-CIOP)。在该协议中,数据的表示方式与前面讲述GIOP协议完全相同,但是在消息的定义以及传递方式中,采用的是远程方法调用(Remote Procedure Call,RPC)中的Locate和Invoke方法实现消息以参数形式传递,进而实现ORB间的互操作。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有