主要规定在任何面向连接的网络传输层上的一些操作规则。如: Asymmetrical connection usage,Request multiplexing, Overlapping requests, Connection management 另外,因为 CORBA是基于对象的,GIOP还需定义一套 Object Location的机制 GIOP因为是一种通用协议,所以不能直接使用。在不同的网络上需要有不同的实现 目前使用最广的便是 Internet上的GIOP,称为IOP( Internet Inter- ORB Protocol)。IOP基 于TCPP协议。IOP消息格式定义如下: module IIOP [l/ IDL extended for version 1.1 struct Version octet major; octet minor. struct ProfileBody_1_0( ll renamed from ProfileBody Version iiop version; string host; unsigned short port; sequence <octet object_ key } struct ProfileBody_1_1 I Version iiop version unsigned short port sequence <octet object key; sequence <lOP: :TaggedComponent components; 1.2.5 Dynamic Invocation Interface (DID A Dynamic Skeleton Interface DsD) 动态调用接口(DI)和动态骨架接口(DSI)是用来支持客户在不知道服务器对象的接口 的情况下也能调用服务器对象。 个增加了DI和DSI的 CORBA调用模型如下
6 主要规定在任何面向连接的网络传输层上的一些操作规则。如:Asymmetrical connection usage,Request multiplexing,Overlapping requests,Connection management 等。 另外,因为 CORBA 是基于对象的,GIOP 还需定义一套 Object Location 的机制。 GIOP 因为是一种通用协议,所以不能直接使用。在不同的网络上需要有不同的实现。 目前使用最广的便是 Internet 上的 GIOP,称为 IIOP(Internet Inter-ORB Protocol)。IIOP 基 于 TCP/IP 协议。IIOP 消息格式定义如下: module IIOP { // IDL extended for version 1.1 struct Version { octet major; octet minor; }; struct ProfileBody_1_0 { // renamed from ProfileBody Version iiop_version; string host; unsigned short port; sequence <octet> object_key; }; struct ProfileBody_1_1 { Version iiop_version; string host; unsigned short port; sequence <octet> object_key; sequence <IOP::TaggedComponent> components; }; }; 1.2.5 Dynamic Invocation Interface (DII) 和 Dynamic Skeleton Interface (DSI) 动态调用接口(DII)和动态骨架接口(DSI)是用来支持客户在不知道服务器对象的接口 的情况下也能调用服务器对象。 一个增加了 DII 和 DSI 的 CORBA 调用模型如下:
Client Object Implementation amic ORB Static IDL Dynamic Object Stubs Skeleton Skeleton Adapter ORB Core Interface identical for all ORB implementations Up-call interface There may be multiple object adapters There are stubs and a skeleton for each object type I, Normal call Interface ORB-dependent Interface 图14增加了D和DSI的调用模型 我们在“提高篇”中再详细讲述DI和DSI。 126 Object Adapter(对象适配器) 对象适配器是ORB的一部分。它主要完成对象引用的生成、维护,对象定位等功能 对象适配器有各种各样。 Basic Object Adapter(BOA,基本对象适配器)实现了对象适配器的 些核心功能。而 Portable Object Adapter(POA,可移植对象适配器)则力图解决对象实现 在不同厂商的ORBs下也能使用的问题。最新的ORB产品一般都支持POA。 还有其他一些专有领域的对象适配器如 Database Object Adapter等。 13 CORBA历史 CORBA是由OMG( Object Management Group)负责制定和维护的一组规范。OMG成 立于1989年,是一个非营利的国际性软件组织,主要致力于为分布式计算提供解决方案并 制定规范。除 CORBA外,OMG还制定了如UML( United Modeling Language,统一建模语 言)、CWM等其他重要规范。OMG目前已有世界上760多个成员,东南大学是中国唯一的 OMG成员 CORBA自1990提出并被OMG采纳以来,已历经多个版本。分别称为 CORBA1、 CORBA2和 CORBA3。其中 CORBA1是对 CORBA1.x的统称, CORBA2是对 CORBA2x 的统称。目前 CORBA3规范还在制订中,不久便可面世。 下面是 CORBA版本的更新历史。 CORBAl CORBA1.090-12,提出 CORBA框架 CORBA1.191早期,定义了IDL及 ORB Interface
7 图 1.4 增加了 DII 和 DSI 的调用模型 我们在“提高篇”中再详细讲述 DII 和 DSI。 1.2.6 Object Adapter (对象适配器) 对象适配器是 ORB 的一部分。它主要完成对象引用的生成、维护,对象定位等功能。 对象适配器有各种各样。Basic Object Adapter(BOA, 基本对象适配器)实现了对象适配器的 一些核心功能。而 Portable Object Adapter(POA,可移植对象适配器)则力图解决对象实现 在不同厂商的 ORBs 下也能使用的问题。最新的 ORB 产品一般都支持 POA。 还有其他一些专有领域的对象适配器如 Database Object Adapter 等。 1.3 CORBA 历史 CORBA 是由 OMG(Object Management Group)负责制定和维护的一组规范。OMG 成 立于 1989 年,是一个非营利的国际性软件组织,主要致力于为分布式计算提供解决方案并 制定规范。除 CORBA 外,OMG 还制定了如 UML(United Modeling Language, 统一建模语 言)、CWM 等其他重要规范。OMG 目前已有世界上 760 多个成员,东南大学是中国唯一的 OMG 成员。 CORBA 自 1990 提出并被 OMG 采纳以来,已历经多个版本。分别称为 CORBA 1、 CORBA 2 和 CORBA 3。其中 CORBA 1 是对 CORBA 1.x 的统称,CORBA 2 是对 CORBA 2.x 的统称。目前 CORBA 3 规范还在制订中,不久便可面世。 下面是 CORBA 版本的更新历史。 CORBA1 : CORBA 1.0 90-12, 提出 CORBA 框架 CORBA 1.1 91 早期,定义了 IDL 及 ORB Interface
CORBA1.292-93,修订 CORBA定义了ORB的一些基本特性,但是没有定义而ORB间的通用协议。 CORBA2 主要解决这一问题 CORBA 2 CORBA2094-12,定义了GIOP和IOP CORBA2.197-08 CORBA2298-02,增加了POA CORBA2.398-12 CORBA23.199-10,一些 Change bars CORBA2400-10,具备 CORBA3的雏形,包括: QoS Specification, Asynchronous Messaging, Minimum CORBA, Real-Time CORBA. CORBA Components, Notification Services, Firewall Specification CORBA2.4.100-1 CORBA24.201-02 因此,可以说, CORBA I提出ORB和IDL等 CORBA基本概念, CORBA2主要贡献 是IOP,而在制订中 CORBA3则集中于 CORBA Components技术及Real-time特性等。 对 CORBA的简要介绍就到这里。关于OMG及 CORBA的更多信息,可访问OMG站 点 http://www.omg.org 下面我们开始编写第一个 CORBA程序。 2使用 Orbix2000编写第一个 CORBA程序 在编写 CORBA程序前,需要安装 CORBA环境。提供 CORBA产品的厂商有很多,这 里我们采用IONA公司的Obix2000。IONA公司在 CORBA领域一直处于领先地位,其产 品几乎总是和 CORBA规范同时出台。 Orbix2000是IONA公司2001年2月发布的最新产 品,它具有Real-time特性,而这正是 CORBA在电信领域应用的最关键的特性之 而程序设计语言采用JAVA。其开发环境为 J Builder4. J Builder4是 Enterprise公司(原 著名的 Boland公司)推出的最新JAVA集成开发环境,其内嵌JDK1.3 21安装环境 你需要安装JAVA和 CORBA ORB环境,前者使用 J Builder4,后者使用 Orbix2000。 操作系统建议使用 Windows2000( Professional or Server),因为我们后面所讲的一些配置 工作是基于 Windows2000,和 Windows98稍有区别。另外, Windows2000也更为稳定
8 CORBA 1.2 92-93, 修订 CORBA 定义了 ORB 的一些基本特性,但是没有定义而 ORB 间的通用协议。CORBA 2 主要解决这一问题。 CORBA 2: CORBA 2.0 94-12, 定义了 GIOP 和 IIOP CORBA 2.1 97-08 CORBA 2.2 98-02, 增加了 POA。 CORBA 2.3 98-12 CORBA 2.3.1 99-10, 一些 Change bars. CORBA 2.4 00-10, 具备 CORBA 3 的雏形,包括:QoS Specification, Asynchronous Messaging, Minimum CORBA, Real-Time CORBA, CORBA Components, Notification Services, Firewall Specification 等。 CORBA 2.4.1 00-11 CORBA 2.4.2 01-02 因此,可以说,CORBA 1 提出 ORB 和 IDL 等 CORBA 基本概念,CORBA 2 主要贡献 是 IIOP,而在制订中 CORBA 3 则集中于 CORBA Components 技术及 Real-time 特性等。 对 CORBA 的简要介绍就到这里。关于 OMG 及 CORBA 的更多信息,可访问 OMG 站 点: http://www.omg.org. 下面我们开始编写第一个 CORBA 程序。 2 使用 Orbix 2000 编写第一个 CORBA 程序 在编写 CORBA 程序前,需要安装 CORBA 环境。提供 CORBA 产品的厂商有很多,这 里我们采用 IONA 公司的 Orbix 2000。IONA 公司在 CORBA 领域一直处于领先地位,其产 品几乎总是和 CORBA 规范同时出台。Orbix 2000 是 IONA 公司 2001 年 2 月发布的最新产 品,它具有 Real-time 特性,而这正是 CORBA 在电信领域应用的最关键的特性之一。 而程序设计语言采用 JAVA。其开发环境为 JBuilder 4. JBuilder 4 是 Enterprise 公司(原 著名的 Boland 公司)推出的最新 JAVA 集成开发环境,其内嵌 JDK 1.3。 2.1 安装环境 你需要安装 JAVA 和 CORBA ORB 环境,前者使用 JBuilder 4, 后者使用 Orbix 2000。 操作系统建议使用 Windows 2000(Professional or Server),因为我们后面所讲的一些配置 工作是基于 Windows 2000,和 Windows 98 稍有区别。另外,Windows 2000 也更为稳定
211安装Java Orbⅸx2000需要一个JDK环境。如果你安装了 J Builder4,可以直接使用其所带的 JDK13。否则,你需要单独安装一个JDK。JDK是免费的,你可以下载一个较新的版本。 J Builder4不是必需的。但我们建议你使用它,因为 J Builder4支持 CORBA程序的编 写,除了能使用其自身的 Visibroker( Enterprise公司自己的ORB)外,通过配置,还可直 接使用Orbⅸx。这对提高我们的开发效率是很有帮助的 212安装 Orbix2000 Orbⅸx2000安装很简单,按照安装步骤进行即可。但要注意以下几点 尽量按缺省方式,这样可以省去不少配置上的麻烦。如安装路径使用C: Program Fles山ONA:使用典型安装等。 Orbix2000同时支持JAVA和C,还带有一个 COMet Development Kit。只需安装Obi 2000V1.2 Java development Kit即可 Product Installation Options Please use a check mark to denote each of the items you would like installed at T Orbix 2000 1.2 C++Development Kit M Orbix 2000 v1. 2 Java Development Kit PreviousNext」 图2.1安装 Orbix2000 for Java 安装过程中,会提示输入JDK的路径,所以,最好先安装JAVA。假设 J Builder4安装 在 C: U Builder4目录下,那么,在提示框中输入C: W Builder4 Ajdkl.3。 Orbix2000需要 license. License. txt文件中包含有所需的 license. txt,告诉安装程序这个 文件所在的位置,安装程序会自动读取并安装所需的 license
9 2.1.1 安装 Java Orbix 2000 需要一个 JDK 环境。如果你安装了 JBuilder 4,可以直接使用其所带的 JDK1.3。否则,你需要单独安装一个 JDK。JDK 是免费的,你可以下载一个较新的版本。 JBuilder 4 不是必需的。但我们建议你使用它,因为 JBuilder 4 支持 CORBA 程序的编 写,除了能使用其自身的 Visibroker(Enterprise 公司自己的 ORB)外,通过配置,还可直 接使用 Orbix。这对提高我们的开发效率是很有帮助的。 2.1.2 安装 Orbix 2000 Orbix 2000 安装很简单,按照安装步骤进行即可。但要注意以下几点: 尽量按缺省方式,这样可以省去不少配置上的麻烦。如安装路径使用 C:\Program Files\IONA;使用典型安装等。 Orbix 2000 同时支持 JAVA 和 C,还带有一个 COMet Development Kit。只需安装 Orbix 2000 v1.2 Java Development Kit 即可。 图 2.1 安装 Orbix 2000 for Java 安装过程中,会提示输入 JDK 的路径,所以,最好先安装 JAVA。假设 JBuilder 4 安装 在 C:\JBuilder 4 目录下,那么,在提示框中输入 C:\JBuilder 4\jdk1.3。 Orbix 2000 需要 license。License.txt 文件中包含有所需的 license.txt, 告诉安装程序这个 文件所在的位置,安装程序会自动读取并安装所需的 license
r you have censes to install, press Browse to locate the file contaning the new f you do not have licenses to install, press Browse Look in orbt2000 A Orbi000-win32_vc60_. ea 图22安装 license 最后,安装程序会做一些配置工作,为使配置生效,你需要重启机器。 213配置 Orbix2000 为使 Orbix2000能正常工作,还需要做一些额外的配置工作,主要是设置一些必需的 环境变量。这里以 Windows2000为例。( Windows98中需要在 autoexec.bat中用相应命令 设置。) 打开 Windows的控制面板,找到“ System” Advanced"-""Environment variables如图2.3 所示 Genera I Network Identification I Hardware User Profiles Advanced I ?1 ser variables for Administrator Variable C: Program Files\Exceed. ntthclircsy, jar C: Documents and Settings\Administrat Delete C: \WINNT\system32\ cmd. exe C: Program Files\IoNA\orbix_art, 1. 21lo C: 1Builder4ijdk1 3 Delete 图2.3配置环境变量 Environment Variables”分为两部分:“ User variables”和“ System variables
10 图 2.2 安装 license 最后,安装程序会做一些配置工作,为使配置生效,你需要重启机器。 2.1.3 配置 Orbix 2000 为使 Orbix 2000 能正常工作,还需要做一些额外的配置工作,主要是设置一些必需的 环境变量。这里以 Windows 2000 为例。(Windows 98 中需要在 autoexec.bat 中用相应命令 设置。) 打开 Windows 的控制面板,找到“System”-“Advanced”-“Environment Variables”,如图 2.3 所示。 图 2.3 配置环境变量 “Environment Variables”分为两部分:“User variables”和“System variables