软题库 培训课程
当前位置:信管网 >> 综合知识 >> 文章内容
CORBA技术介绍
来源:信管网 2012年09月12日 【所有评论 分享到微信

一、CORBA的由来
CORBA全称是公共对象请求代理体系结构(common object request broker architecture),它是由IBM、HP等多家公司联合开发的部件软件的体系结构和部件接口标准。1997年8月版的CORBA2.1的版权页上已方21个公司、组织。而支持CORBA的对象管理集团OMG已达750多家公司。
对象管理组英文名是Object Management Group,简称为OMG。OMG是以美国为主体的非盈利性国际组织,共目标是为在计算机网络上独立开发的应用软件建立一个相互之间互操作性的标准。OMG的成员已包括绝大多数信息技术公司和终端用户,其中心任务是接纳广泛认可的对象管理体系结构(Object Management architecture,简称为OMA)
或其语境(context)中的接口和规程的规范。OMA以分布式的对象为集成单位。以对象为
基础来构作分布犬应用系统的最大优点是对象的封装性:对象的数据和状态只能通过对
象上定义的一组运算来访问,而不允许直接存取。因此易于处理平台的异构性,因为数据表达的互异已被隐藏,从而简化了系统的集成。
最初,OMG在1990年制订了对象管理体系结构OMA。OMA是比CORBA更高一层的概念,它定义了一种体系结构,在OMA之上可以用任何方法来实现。CORBA是其中的一种实现方案。
二、对象管理体系结构OMA
OMA由对象模型(objet model)和参考模型(reference model)组成。对象模型主要定义了如何描述在异种(heterogeneous)环境中的分布式对象;参考模型则刻画了对象之间的交互,其组成可以由图1来表示。

图1 OMA参考模型
其中ORB作为对象互相通信的软总线,用来联系客户端和对象间的通信。ORB是OMA参考模型的核心,它保证在分布式异构环境中透明地向对象发送和接收请求,帮助实现应用部件之间的互操作。
在ORB之上有4个对象接口:
(1)对象服务object services(OS)。定义加入ORB的系统级服务,如安全性、命名和事务处理,它们是与应用域无关的。对象服务是一些最有可能被用来支持分布式对象环境F构造应用的标准化部件。目前通过的对象服务包括对象命名服务、事件服务、对象生存期服务、永久对象服务、对象关系服务以及事务服务、并发控制服务等等。
(2)公共设施common facilities(CF)。水平级的服务,定义应用程序级服务,如复合文档等。公共设施是比对象服务粒度更大的可重用的部件块。它主要用来帮助构造跨多个应用域的应用程序。典型的公共设施包括用户接口、信息管理、系统管理和任务管理等。
(3)领域接口如domain interfaces(DI)。面向待定的领域,在OMA中所处的位置与对象服务与公共设施相似。
(4)应用接口application interfaces(AI)。面向指定的现实世界应用。是指供应商或用户借助于ORB、公共对象服务及公共设施而开发的特定产品,它不在CORBA体系结构中标推化。
同时,OMA还定义了OMA参考模型的应用:对象框架(object frameworks)。它是多个部件组成的一种面向特定领域的框架结构,每个部件由一个OMA接口组成。其组成可
以用图2说明。

图2 OMA的对象框架
三、CORBA的结构基础
CORBA的结构基础是OMG的核心对象模型(CORE object model)。部件可作为对象,以客户身份通过封装的接口提出请求,并获取服务对象所提供的服务,形成协同工作的系统。为了达到互操作性,设计了对象请求代理ORB(object request broker)作为通信的基础设施。ORB能够帮助对象实现和网络上另一个对象的握手过程。1994年末出台的
C0RBA 2.0允许不同厂商的ORB协同工作。它截获客户的请求,并负责找出实现其请求的服务对象;传送参数及调用方法给服务对象,并负责返回结果。客户不必知道服务对
象是位于同一机器或是跨网位于不同机器上;也不要求客户与服务对象是否有同一编程
语言、运行于何种平台、使用何种操作系统或有否其他特征。即由ORB来提供异步分布
环境中不同机器上应用的互操作性。
CORBA是建立在OMA概念之上,是OMG所采纳的第一个标准,同时也是OMA的一个重要组成部分。CORBA的OMA定义了一个四层模型,并且规定了其IDL语言(interface definitin language)工作于各个层面。四层模型的底层是ORB;直接建筑在ORB层之上的,是Object Service Layer,它负责对象的命名、创建和管理;第三层是Common Facilities Layer,在这一层完成用户对象直接使用的一些功能,而最高层是Business 0bject,像Java和ActiveX applets等。
对应OMA参考模型,CORBA也相应的有4个对象接口接口对应:
. CORBA服务(CORBA servies)对应对象服务。
. 应用对象(application object)对应应用接口。
. CORBA领域(CORBA domains)对应领域接口。
目前CORBA已经发展到CORBA 2.0。CORBA 2.0主要包括以下几个部分:
·0RB核心(core)。
·OMG接口定义语言IDL。
·语言映射(language mapping)。
·运行机制。
·静态调用:包括Stub and Skeleton。
·动态调用:包括动态Skeleton和接口库(interface repository)。
·对象适配器(object adapter)。
·Inter—ORB协议。
C0RBA的组成见图3,该图表示了客户、服务的执行对象与0RB接口间的关系。

图3 CORBA的组成
ORB能识别的协议是OMG的接口定义语言IDL。它可完整地确定部件的接口——即客户所需使用接口的全部信息。
IDL定义的接口经IDL编译器编译后能产生客户的桩(stub)及执行对象的骨架(skeleton)这类能与ORB通信的接口:
(1)接口桩stub。在编译时确定的静态接口。它位于客户对象的本地,接受客户的请求,对客户来说相当于远程的执行对象。接口桩向ORB提交请求。
(2)动态调用接口(DII)。用于编译时不能确定的请求。与接口桩作用相同。
(3)骨架Skeleton。分动态骨架与静态骨架。它针对执行对象来说代表了远程客户的作用,可在本地调用执行对象服务,并与ORB通信。
(4)对象适配器。提供执行对象可以访问ORB服务的基本接口,其作用是产生及解释对象引用、安全交互、登记和执行等等。
ORB可以用各种方式来实现,只要满足CORBA规定的规范即可。具体ORB实现之间亦可存在接口关系。
CORBA作为标准化接口的规范及体系结构正在发展中,最初仅考虑基本机制。随着对异构分布应用互操作性的深入认识,不断有人提出CORBA应提供更多的服务要求RFP(request for Proposal),如命名服务、交易服务和生命周期等等。CORBA 2.1中都已纳入以上服务要求。但新的要求,如实时系统CORBA、CORBA部件模型和CORBA版本语言等等又作为新的RFP已正式提出。CORBA的产品亦纷纷问世,当然又产生了各
CORBA产品之间的兼容性问题了。
在1996年中期,CORBA向Internet适应的要求被提出,并得到了除微软以外的众多公司的响应。CORBA的开发者创造了被OMG称作“ORBlet”的Java applet,它被下载到使用Java的浏览器后,能够同其他与CORBA标准兼容的对象和服务进行通信交互。现在ORBlet已经能够从Sun、HP、IBM、Iona Technologies InL、Oracle Corp.处得到。最
终,对CORBA的支持将集成到Java浏览器之中。
直到最近,OMG仍然将重点放在对象级的标准上。OMG仅仅制定标准,而并不生产软件产品或分布部件平台。但由于微软的垄断地位和市场的压力,它也发展相应的标准来
保证CORBA和COM对象的交互兼容性。同样的理由也将使之出台DCOM和CORBA的交互协议。
四、应用
CORBA定义了一个带有开放软件总线的分布式结构,在这一结构中,来自不同厂商的、运行在不同操作系统上的对象,能够进行互操作,
CORBA定义了分布式对象如何实现互操作。在World Wide Web盛行之前,特别是 Java编程语言风靡之前,C++开发者基本将CORBA作为其高端分布式对象的解决方案。CORBA对象可以用任何一种cORBA软件开发商所支持的语言,如C、C++、Java、Ada和Smalltalk来编写。
使用接口描述语言(interface description language)编写的对象接口,使得与语言无关的独立性成为可能。IDL使得所有CORBA对象以—种方式被描述,仅仅需要一个由本地语言(C/C++、CORBA、Java)到IDL的“桥梁”。CORBA对象的互通信要以对象请求代理(object request broker)为中介,这种互通可以在多种流行通信协议之上(如TCP/IP或是IPX/SPX)实现。在TCP/IP上,来自于不同开发商的ORB用nternet Inter-Orb协议(IIOP)进行通信。IIOP是ORB保证对象间互操作的必要的通信协议,是CORBA 2.0标准的一部分。
当前,CORBA对于流行的操作系统如Windows、Unix系列都有很好的支持。就是说,CORBA对象可以运行在任何一种CORBA软件开发商所支持的平台上,如Solaris、
Windows95/NT、Open VMS、Digital Unix、HP—UX或AIX等。换句话说,我们可以在
Windows95下运行Java应用程序,同时动态调入并使用C++对象,而实际上,该对象可
能存储于一个在Internet上的Unix Web服务器上。目前,对于较为流行的编程语言(包括(C++、SmalltaLk、Java和Ada95),已经有了许多第三方的ORB。随着其他语言的逐渐流行,CORBA开发商毫无疑问地要做出相应的ORB来支持它们。

扫码关注公众号

温馨提示:因考试政策、内容不断变化与调整,信管网网站提供的以上信息仅供参考,如有异议,请以权威部门公布的内容为准!

信管网致力于为广大信管从业人员、爱好者、大学生提供专业、高质量的课程和服务,解决其考试证书、技能提升和就业的需求。

信管网软考课程由信管网依托10年专业软考教研倾力打造,官方教材参编作者和资深讲师坐镇,通过深研历年考试出题规律与考试大纲,深挖核心知识与高频考点,为学员考试保驾护航。面授、直播&录播,多种班型灵活学习,满足不同学员考证需求,降低课程学习难度,使学习效果事半功倍。

相关内容

发表评论  查看完整评论  

推荐文章