文档介绍:JAVA IDL And CORBA
目的和要求
本次课的安排是介绍CORBA
及如何使用JAVA编写CORBA客户和服务。到本次课结束时大家应该能够使用JAVA设计和实现利用CORBA通信的系统
CORBA
Common Object Request Broker Architecture
公用对象请求代理程序体系结构
概述
CORBA是一个分布式的面向对象应用架构规范, 它定义了分布式对象如何实现互操作,它是由OMG研究组在80年代末提出,在90年代逐步完善,形成现在被软件行业普遍认可的标准——CORBA/IIOP 。、American Airlines、Canon、Data General、Hewlett-Packard、Philips、 Sun 和Unisys等八家公司在1989年组建,专门从事公共软件平台的研究和行业标准的制订, 目前已经有800多个成员单位加入OMG。
CORBA的核心是对象请求代理——ORB (Object Request Broker) ,它提供了网络环境无关性、操作系统无关性和开发语言无关性的公共平台。在面向对象的应用环境中,CORBA对象的请求者不必知道它所请求的对象是在哪里,是如何实现的,而是由ORB来负责跨平台的运作管理,无须应用系统的开发者干预。CORBA所具有的跨平台、分布式、面向对象的这些优点使它具有广阔的应用前景,日益受到软件行业的重视。 CORBA是一个中间件规范并不是一个实体软件。软件开发者通过使用第三方的ORB工具或IDL语言来定义CORBA对象,实现ORB功能。
CORBA的产生
CORBA的产生有其特定的背景,它是在面向对象的技术兴起,客户/服务器模式普遍得到应用的前提下,为屏蔽通信和实现细节的需求,继承已有系统,消除“孤岛”现象而产生的。
最初,OMG 在1990 年制订了对象管理体系(Object Management Architecture), 即OMA, 来描述应用程序如何实现互操作。作为其中的一部分, 需要有一个标准规范应用程序片段即对象的互操作──这导致了CORBA 的诞生。
CORBA与IDL
为了保持CORBA 的商业中立性和语言中立性, 必须有一个中介, 存在于象C + +CORBA 服务器代码和Java CORBA 客户机这样的实体之间。这就是IDL。虽然CORBA本身不是一门语言,但是它引入了一门新的语言。CORBA服务由模式(schema)来描述,而模式是对象可用方法的模版。这样的模式由IDL(Interface Definiyion Language,接口定义语言)表示。和java一样支持CORBA的语言可以实现IDL模式,从而让其他软件可以调用方法。IDL语言是中立的,因此可以利用任何已经作了IDL映射的程序设计语言。
可以映射的语言
目前,可以从OMG得到下列IDL语言的映射规范:
C
C++
Smalltalk
COBOL
Ada
Java
CORBA的体系结构
CORBA对象的客户有一个对该对象的“对象引用”,客户使用“对象引用”来请求“对象方法”。如果服务端不在本地(不在同一机器的同一应用系统中或不在同一机器中),则“对象引用”指向stub功能(在Java 中,stub和skeleton都是类来实现),stub利用ORB机制将请求带到服务端的对象。stub通过ORB来确定运行对象的服务端的机器,并请求该机器的ORB连接到对象的服务端去。stub同ORB建立连接后,向该机的skeleton发送“对象引用”及相关参数,再由skeleton功能连接到目标对象的“对象实现”上。skeleton将请求和参数转换成规定格式然后调用该对象。最后,“对象实现”的结果沿着来的路径传送回客户请求端。