CORBA技术介绍
2005年 7月内容概要
背景介绍
CORBA系统基本组成
其他相关信息背景介绍分布环境的异构性硬件平台的异构性,IBM主机,UNIX工作站,PC机、
机器人等操作系统的异构性:各种版本的 UNIX,Microsoft
Windows,IBM OS/2,Macintosh等开发语言的异构性,C,C++,Java,Delphi等网 络 平 台 的 异 构 性,Ethernet,FDDI,ATM 和
TCP/IP,IPX\SPX等构造和集成异构环境下的分布式应用需要一个优良的支撑平台对象的主要特点对象的封装特性内部实现与外部借口相分离对象的继承特性方便扩展与扩充对象技术 +分布处理技术 =
分布对象计算技术
OMG组织的宗旨和组成
OMG组织(对象管理组织)致力于制订、采纳和吸收异构环境下 OO分布式应用的开发和集成的标准
OMG由 11家公司 成立于 1989年 4月,其中包括 3Com、
American Airlines,Canon,Data General,Hewlett-
Packard,Philips,Sun和 Unisys。 1989年 10月,
OMG作为一个独立的非赢利性机构开始运行。目前,
OMG组织拥有 800多个会员
OMG组织由三个机构组成:
平台技术委员会( Platform Technology Committee)
领域技术委员会( Domain Technology Committee )
体系结构委员会( Architecture Board)
OMG组织的成员
2 A B
3M
A dobe
A ir F ranc e
A lca t el
BA SF
BEA S y st em s
Bel lSo u th
Boe ing
Bri stol- M y ers
CA
C he v r o n
C o m paq
C o nc ep t 5
C r ed it Su is se
D a im ler- Ben z
D eer e & C o,
D HL
D M SO
D N S T ech
Econ o m ica
ED S
Eric sson
Eu r o c o nt r o l
Exper s o ft
F o rd M o t o r
F ujitsu
F uji E le ctr ic
GM D F o k us
HP
Hit a ch i
IBM
Inpr is e
ION A
J,P,M o rg a n
Ke ele U n iv
Lucent
M etaph a s e
M icr o F o cu s
Mi cr os of t
M itr e
N EC
N etsc a pe
N TT
N IST
N o k ia
N o rte l
N SA
Or a c le
P hil ips
R a ti o n a l
R eu ter s
R ico h
SA P
Sherpa
SN I
Sp rint
Sun
T elef o ni ca
TIBC O
TU B erl in
U nis y s
V ISA
W 3 C
X er o x
Southe a st U ni v,
OMG组织的 OMA体系结构
对象请求代理 ORB使对象在分布式环境中透明地收发请求和响应
对象服务是为使用和实现对象而提供的基本服务集合
通用设施是为许多应用提供的共享服务集合
领域接口是为特定应用领域提供的公共服务的集合
应用接口是用户应用软件自行提供的供他人使用的服务应用接口领域接口 通用设施对象服务对象请求代理 ( O R B )
OMG组织制订的通用参考体系结构
CORBA规范
CORBA规范的发展进程
1991 CORBA 1.1规范发布
1991 第一个遵循 CORBA规范的商业产品进入市场
1993 CORBA 1.2规范发布
1994 CORBA 2.0 规范发布,包括了 CORBA互操作规范
1995 遵循 CORBA 2.0规范的商业产品进入市场
1997 CORBA 2.1规范发布,包括了 COM/CORBA互操作规范
1998 CORBA 2.2规范发布,增加了 POA,Java语言映射等
1999 CORBA 2.3规范发布,增加了传值调用,Java到 IDL的反向映射,DCOM/CORFBA互操作 等,并对语言映射部分进行了调整
2000 CORBA 3.0规范
CORBA规范的设计哲学
CORBA允许在不同对象间尽可能透明地传递请求
应用可以跨越不同的应用领域
支持服务(例如,名址映射)位于 CORBA之外
CORBA具有平台无关性
可以工作于不同的操作系统和网络环境下
客户和服务器可以位于不同的平台上
CORBA具有编程语言无关性
可以支持多种编程语言(面向对象及非面向对象的语言)
客户和服务器可以使用不同的编程语言开发
CORBA实现系统
ICL/ Peerlogic DAIS
IBM Component Broker
Inprise Visibroker
BEA M3 (neé Iceberg)
ThinkOne MICO
Gerald Brose JacORB
Expersoft CORBAplus
IONA Orbix
Sun Chorus
Hitachi TPBroker
ObjectShare Dist,Smalltalk
OIS ORBExpress
Netscape Navigator 4.0
Lotus Notes 5.0
Novell Netware
Javasoft Java/ IDL (in JDK 2)
BBN Corbus
Paragon Software Oak
AT& T Labs OmniORB 2.0
Nortel RCP- ORB
Fujitsu ObjectDirector
NEC ObjectSpinner
Gemstone GemORB
DNS SmalltalkBroker
CORBA对象 服务
CORBA公共对象服务将 ( 分布式 ) 应用软件的开发中的基本服务和功能标准化,从而实现它们的可重用性,以降低开发的代价
CORBA公共 对象服务在 COSS规范中加以定义
目前,OMG组织制订了 14种服务,包括 名录服务,
事件服务,永久对象服务,生命周期服务,并发控制服务,外部化服务,关系服务,事务服务,
查询服务,许可证服务,特征服务,时间服务,
交易服务和安全服务领域接口
目前,OMG组织建立了以下应用领域技术委员会,
基本事务对象
电子商务领域
金融领域
运输领域
制造领域
电信领域
医疗领域
生命科学领域
CORBA系统基本组成单个 ORB的体系结构
O R B 核心动态调用
I D L

OR B
接口动态构架基本对象适配器
I D L
构架用客户程序 服务对象实现程序对象引用
对象引用( Object Reference) 是在一 ORB
范围内用以指定和标识一个目标服务对象的信息 ;是客户使用服务器对象的“句柄”
对象引用与指针
CORBA对象与伪对象对象调用
调用请求
目标对象的引用 +操作名 +操作参数
服务上下文 (service context)
输出,返回值或者异常信息
调用参数
IN:从客户到服务器的参数
OUT:从服务器返回的参数
INOUT:包括以上的两方面
OMG IDL语言
OMG IDL语言 ( Interface Definition Language) 是一种独立于编程语言,下层网络和具体实现的数据类型和服务接口描述语言
OMG IDL语言 借鉴了 C++语言的语法,去掉了其中涉及实现语义的内容,同时添加了若干适用于分布式系统的特征
OMG IDL语言 (续 )
OMG IDL语言基本数据类型,
short,long,long long (signed/unsigned)
float,double,long double
char,wchar,boolean,octet
OMG IDL语言构造类型,
struct,union,enum,sequence,string,wstring,array
Any
对象引用接口与操作
接口
属性定义
操作定义
数据结构定义
用户异常定义
操作定义
调用语义 +返回值类型 +操作名 +参数类型 /方向 +
异常 +上下文
OMG IDL语言 (示例 )
interface account {
exception NoMoney {};
readonly attribute float balance;
void makeLodgement (in float f);
void makeWithdrawal (in float f) raises
(NoMoney);
};
OMG IDL语言映射
IDL语言完全是一种描述性语言,而非编程语言 。
它没有控制结构,因而不能用于实现客户方程序和对象实现方程序
OMG组织已经定义了 OMG IDL语言到 C,C++、
SmallTalk,Java,COBOL和 Ada语言的映射
IDL桩和 IDL构架服务对象调用者服务对象服务对象调用者服务对象
STUB SKELETON
IDL桩和动态调用接口( DII)
IDL桩在这里所起的主要作用就是把请求从特定的编程语言的表示形式转换为适于传递到目标对象的形式
IDL桩是由 IDL编译器编译目标对象的 IDL接口描述文件而自动产生的
IDL桩又被称为静态调用接口
IDL桩和动态调用接口( DII)
动态调用接口( Dynamic Invocation Interface)
由一组 CORBA系统对象组成,这些对象提供给客户动态地创建和调用对象请求功能:
NamedValue,NVList,Request
DII中可以构造三类调用操作:
- 同步调用操作( Synchronous Invocation)
- 延迟同步调用操作( Deferred Invocation)
- 单向调用操作( Oneway Invocation)
IDL构架和动态构架接口( DSI)
构架的作用:
- 查找并将请求派发 ( Dispatch) 到所要求目标对象的相应操作
- 对调用请求的参数进行解码,从传输格式转化为对象实现所使用的编程语言的表示形式
- 对调用请求的处理结果进行编码,从对象实现所使用的编程语言的表示形式转换为传输格式
IDL构架和动态构架接口( DSI)
与 IDL桩类似,IDL构架也是根据目标对象接口的 IDL描述由 IDL编译器自动产生的调用对象实现的部件
动态构架接口( Dynamic Skeleton Interface)
允许动态调用对象,对象实现需要实现动态调用例程( Dynamic Invocation Routing) 的接口,
该接口名字为 DynamicImplementation
IDL桩和 IDL构架以及 DII和 DSI之间没有必须配对的限制对象适配器和基本对象适配器
对象适配器 OA位于服务对象实现和 ORB之间,提供对象登记、对象引用生成、服务激活等功能
CORBA 2.0规范中定义了基本对象适配器 BOA,以满足大多数对象实现的需要
BOA提供了以下功能,(1)产生和解释对象引用; (2)
对请求进行认证; (3)激活和去活实现; (4)激活和去活单个对象; (5)构架调用方法; (6)实现对象的登记对象适配器和基本对象适配器
( 续)
根据 CORBA 2.0规范,BOA在激活对象实现应用程序时,支持四种实现激活方式:
- 共享服务器方式 ( Shared Server )
- 非共享服务器方式 ( Unshared Server)
- 每方法 /服务器方式 ( Server-Per-Method)
- 永久服务器方式 ( Persistent Server)
GIOP/IIOP协议
GIOP协议:
- 公共数据表示( CDR)
- GIOP消息
- GIOP消息传输机制
IIOP( Internet Inter-ORB Protocol) 是 GIOP的一种映射,它定义了用于 Internet之上的 ORB间标准互操作协议,它利用的运输层协议就是
Internet所采用的 TCP协议
GIOP/IIOP协议(续)
GIOP协议版本
GIOP 1.0( CORBA 2.0)
包含 7种消息:
Request,CancelRequest,LocateRequest(发自 client方)
Reply,Locateeply,CloseConnection (发自
server方)
MessageError (发自双方)
GIOP 1.1( CORBA 2.1)
在 GIOP 1.1的基础上增加了 Fragment消息,该消息可以发自双方
GIOP 1.2( CORBA 2.3)
CORBA 系统的运行原理桩或 DII
编码
IIO P 消息操作系统
TCP/ IP
对象适配器解码
IIO P 消息操作系统客户 服务器构架或 DS I
O RB 及
IIO P
CORBA 3.0规范
CORBA 3.0规范新增加的内容包括,
CORBA组件模型
异步消息传输
对象传值
Java到 IDL反向映射
Internet 防火墙
最小 CORBA
实时 CORBA
其他相关信息
OMG主页
http://www.omg.org/
http://www.corba.org/
其他相关主页
http://www.cetus-links.org/oo_corba.html
http://www.acl.lanl.gov/CORBA
http://www.aurora-tech.com/corba-faq/
CORBA新闻组 comp.object.corba
ORBUS 1.1系统
http://www.nj.cims.edu.cn/