CORBA体系结构研究
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
CORBA体系结构研究
摘要:CORBA 规范被称为是面向21世纪的软件总线,已经成为流行的分布对象计算规范。本文重点分析了CORBA的体系结构和实现机制, 详细描述了ORB 的体系结构和CORBA 的运行流程,并给出了一个利用CORBA实现c++和java混合编程的实例。
关键词:CORBA; ORB;SMART AGENT;混合编程。
The Research of CORBA Architecture
Abstract:CORBA specification is called 21st century - oriented soft bus. Now, it becomes a popular distributed object computing specification. This paper analyses its Architecture and Implementation. And an example of implementing a HelloWorld program using c++ and java mixed programming based on CORBA is given in this paper.
Key words: CORBA; ORB; Smart Agent; Mixed Programming.
1CORBA 简介
CORBA 是OMG 定义的分布式应用程序的标准结构。它的目的是为了简化开发分布式应用程序的复杂性,用于创建一个基于对象的跨平台的分布式结构。为了实现上述目标,OMG 组织制定了OMA(Object Management Architecture ,对象管理体系结构) 参考模型。该模型描述了OMG的规范所遵循的概念化的结构基础,其核心部分是ORB (Object Request Broker , 对象请求代理) 。基于ORB 机制就可以充分利用分布的、可以互操作的对象构造和可以互操作的应用。这种优势是明显的,用户可以在不了解实现交互细节的情况下,建立共享资源的应用。
CORBA 是一个透明的中介分布式对象标准,遵循CORBA 标准编写的分布式对象可以在许多平台中执行。以C + + Builder5. 0 中所使用的Inprise公司的VisiBroker 为例,目前其所支持的平台有Windows 95/ 98 , Windows NT , Solaris , HP - UX ,IBM AIX ,SGI , IBM 390 以及Dec。此外CORBA 也是一个语言无关的对象标准,同样可以使用多种语言来开发CORBA 对象及客户端应用程序,甚至可以混合各种语言来开发CORBA 应用系统。
2 CORBA 的体系结构
2. 1 CORBA 的体系结构与实现机制
在CORBA 应用系统中主要分为两部分:一是位于应用程序服务器中的CORBA 对象,另一个是应用使用的客户程序。这些客户程序通过CORBA技术使用CORBA 对象提供的服务来完成其工作。CORBA 规范定义了客户程序与服务程序中的对象如何进行通信的机制。
对象请求代理(ORB) 负责处理它们之间的通信。ORB 提供了支持分布式处理的机制:为请求查找具体的对象实现, 让对象实现作好接收请求的准备,传送构成请求的数据等。客户所看到的接口完全独立于对象所在的物理位置,实现对象的编程语言,以及在对象的接口中没有反映出来的其他特性。ORB 通过IDL 程序框架或动态程序框架来定位相应的实现代码,传送参数,以及对对象实现的传送控制。
处理通信的对象分别称为存根和构架。客户端为存根(Stub) ,服务器端为构架(Skeleton) 。在客户端存根对象担当CORBA 对象的代理,当客户程序调用CORBA 对象的方法时,存根把调用传递给ORB ,ORB 使用Smart Agent (聪明代理) 程序定位CORBA 服务器,在CORBA 服务器上,ORB 应用程序把调用传递给构架,构架ORB 的通信需要经过BOA(Basic Object Adaptor ,基本对象适配器) ,CORBA 服务器运行指定的过程,然后由相反的路径返回结果。
图1 显示了CORBA 应用程序各部件之间的调用关系,ORB 在CORBA 客户和服务器之间传递方法调用和相关信息。
图1 CORBA 应用程序结构图
Smart Agent 用来定位CORBA 服务器。启动程序时,自动访问Smart Agent 。如果要支持CORBA ,应该在局域网的某台机器上运行Smart Agent,当然也可以启动多个Smart Agent,以提高系统的可靠性。当客户机或服务器启动时,它们通过广播消息寻找Smart Agent ,因此无需事先知道Smart Agent 的位置。ORB 实际上是一组放在动态库orb- r.dll 中的函数,用户很少直接调用该DLL 中的函数,系统在必要的时候调用他们。当服务器启动时,ORB 向Smart Agent 注册CORBA 服务器。CORBA系统的结构其实并不复杂,并与DCOM 的结构非常相似。我们可以把它看作扩展的远程过程调用(RPC) 。
2. 1. 1 存根和构架
CORBA 结构中的存根和构架很像我们在前面提到COM 中的代理对象和存根DLL。客户应用程序通过ORB 调用远程的CORBA 对象,实际上,是调用存在于客户应用程序中的存根对象。这个存根对象具有和远程CORBA 相同的方法和属性,所以客户应用程序就像远程CORBA 对象一样来使用这个存根对象。存根对象是远程CORBA 对象在客户应用程序中的一个化身。当客户程序调用存根对象时,存根对象再通过ORB 来调用远程CORBA 对象。这中间需要对数据进行调度。当存根对象通过ORB 把数据调度到服务器程序后,就由服务器应用程序中的构架对象来处理。构架对象会将调度过来的数据组织成服务器可使用的格式,然后根据需要再调用CORBA 对象。完成后,再通过相反的过程将数据传回客户应用程序。虽然这种调用过程很复杂,但实际实现中可以由开发工具来完成。
2. 1. 2 聪明代理
聪明代理主要是用来定位应用程序服务器。它其实是一个动态的、分布式的目录服务。应用程序服务器要先向聪明代理进行注册,聪明代理中有向它注册的所有服务器的一个信息列表(其中就包含服务器的位置信息),在需要时可以查找这个列表来确定所需的应用服务器的位置。聪明代理至少要在局域网(只可以发送广播数据报)的一台计算机上运行,ORB使用广播数据报来确定聪明代理的位置。在一个网络中同时可以运行多个聪明代理程序,这样就可以提高程序的稳定性,聪明代理支持服务器之间的负载平衡。它还提供了服务器的失效保护,如果连接失败,聪明代理将重新启动服务器,或重新定位另外一台计算机上的服务器。2. 2 ORB 的体系结构
对象请求代理是CORBA 参考模型的核心,它类似于一个电话交换机,提供产生呼叫和接收呼叫的基本处理机制,通过与对象服务的结合,可以确保符CORBA 规范的应用实体之间进行有意义的通信。单个ORB 的体系结构如图2 所示。