OMG IDL语法规则及ORB

原创 2002年04月09日 09:39:00

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间的互操作。

OMG IDL语法规则

OMG IDL语法规则 (本文转载自软件工程专家网www.21cmm.com)苏洋OMG IDL文件概述   从本质上讲,OMG IDL接口定义语言不是作为程序设计语言体现在CORBA体系结构中的,而...
  • gigix
  • gigix
  • 2002年04月09日 09:39
  • 2297

Corba概念(GIOP、IIOP、IOR、ORB、IDL)

Corba概念(GIOP、IIOP、IOR、ORB、IDL) CORBA 公用对象请求代理(调度)程序体系结构(Common Object Request Broker Architect...
  • vtopqx
  • vtopqx
  • 2015年11月15日 15:23
  • 1229

IDL 语法

IDL 是接口描述语言(Interface description language,缩写IDL),是CORBA规范的一部分,是跨平台开发的基础。IDL是用来描述软件组件接口的一种计算机语言。IDL通...
  • afandaafandaafanda
  • afandaafandaafanda
  • 2015年01月22日 21:46
  • 1142

OMG 接口定义语言(IDL)

OMG 接口定义语言(IDL) 用 RPC / COM /CORBA 技术来编写分布式系统时都需要接口定义语言 (IDL)。 IDL特点:1、IDL 是一种规范语言。2、IDL 看上去很像 C 语言。...
  • easyxu
  • easyxu
  • 2002年04月05日 09:20
  • 2346

OMG(Object Management Group)

这个要说个笑话,去年有个师兄在答辩会上,有个流程图,其中有一步他用一个圆形来表示是或否,答辩组老师就问你为什么要用圆形不用菱形。师兄憋了很久说他觉得圆形好看,老师无语后说了句说你应该去给ISO提建议,...
  • tnt87
  • tnt87
  • 2014年12月27日 21:10
  • 751

腾讯2017暑期实习生OMG事业群一面面经

总结 主要问简历 1.复制构造函数什么时候需要重写 2.多进程同步方式,多线程同步方式 3.两道编程题(数学问题)大数据下点集里最短距离的两点,优化时间(邮局问题,当时忘了…) 4.c++11里并发处...
  • hiyajo_salieri
  • hiyajo_salieri
  • 2017年04月17日 19:35
  • 515

opencv-基于ORB特征点匹配

#include #include #include #include using namespace cv; // 计算图像的SIFT特征及匹配 cv::Mat cacORBFeatu...
  • hb707934728
  • hb707934728
  • 2016年07月08日 10:23
  • 5373

腾讯笔试、OMG一面、二面、HR面

一年有余没有写博客了,这一年经历了很多事。找实习、夏令营、考研、脚骨折受伤、复试、来到中科院工作。直到最近,才有时间一一记录这一年以来的发生的种种事情。先从去年腾讯面试说起吧,时间久远,可能记忆得不是...
  • BitCs_zt
  • BitCs_zt
  • 2017年04月25日 11:37
  • 1173

【图像特征提取6】ORB特征点的描述----BRIEF描述子

(一)BRIEF描述子           在ORB特征提取的第一步根据FAST角点检测算法检测出特征点(角点、兴趣点、关键点)之后,我们需要以某种方式来描述这些特征点的属性。对于这些特征点的描述算法...
  • maweifei
  • maweifei
  • 2017年03月17日 17:50
  • 1921

OMG

OMG有多种含义,它可以是Object Management Group (对象管理组织) 的缩写,也可以是Overhead Mounted Gun(顶置炮 )的缩写释意。但其最有名的用法还是作为Oh...
  • vbloveshllm
  • vbloveshllm
  • 2013年10月21日 10:02
  • 552
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:OMG IDL语法规则及ORB
举报原因:
原因补充:

(最多只允许输入30个字)