本文对CORBA和COM/DCOM两种分布式组件标准进行了深入剖析,分析比较了两者的体系结构、核心技术与实现机理,并介绍了采用C/S和B/S混合模式的变电管理系统的组成以及CORBA技术的应用。
关键词:CORBA;COM/DCOM;ORB;变电管理;信息系统
ApplicationofDistributedComponentsInSubstationMISSONGRen-jie,LIXiao-hua(TheNorthEastChinaInstituteofElectronicPowerEngineering,Jilin132012)
Abstract:ThisarticlepenetratesintothestandardsofdistributedcomponentsandmakesathoroughresearchofCORBAandCOM/DCOM.Itintroducesthearchitecture,kerneltechniqueandimplementingmechanisminthewayofcomparisonandanalysis.AndintroducestructionofSubstationMISbasedoncombinationc/swithb/sandapplicationofCORBAcomponent
keywords:CORBA,COM/DCOM,ORB,Stub,Skeleton,SubstationMIS0引言
近年来,局内MIS网的建立,为供电局的生产管理、调度自动化、办公自动化等提供了技术保障,相应软件的开发与应用,使供电企业内部各职能部门的管理水平有了很大提高。这对变电所的运行和管理提出了更高的要求。有必要研制开发一套变电所管理信息系统软件。目前开发管理信息系统主要采用两种结构:一种是两层的客户机/服务器结构(C/S),另一种是三层的客户端、应用服务器和数据库结构(B/S)。C/S方式和B/S方式各自有着不同的优势:C/S模式具有成熟的设计开发方法和工具,有交互性强、界面友好、安全性高等特点。B/S模式则简化了客户端,降低了系统的开发和维护开销。多层结构克服了两层结构的维护成本高、负载平衡能力难度大、系统伸缩性差等弊端成为如今主流的应用模式。对于B/S方式,关键是中间件技术,它存放在应用服务器层,客户端直接访问中间组件,由中间组件和数据库交互,数据经中间组件处理后将结果送回到客户端。当应用逻辑发生变化时,只须改变中间组件。这为管理系统的升级和扩展提供了方便。1CORBA与COM/DCOM分析比较
CORBA和COM/DCOM虽同为分布式组件标准,但二者无论在实现机理还是在功能上都存在很大的差异。
1.1体系结构
1.1.1CORBA体系结构
CORBA的最终目的是分布式软件集成。CORBA即代表了一种软件开发模式,一种软件开发标准,也提供了软件开发必需的服务,可以使用的工具集合,因此CORBA整体上是由“对象请求代理”,“CORBA服务代理”,“CORBA工具集”与符合CORBA标准的各种应用程序对象一同综合而成。图1为CORBA的体系结构图,其中开发人员仅仅需要完成由虚线框起来的部分,其余均由CORBA本身提供[1,2]。
ORB是连接应用程序、各种对象、CORBA服务及CORBA工具集的核心。也正是ORB将这些构成CORBA图景的元素有序地分割开来,而这种分割是CORBA实现分布式软件集成和即插即用的全部秘诀,ORB主要实现以下分割:
a)对象方法、服务的定义与它们的实现之间的分割。
b)请求“客户”与响应“服务器”之间的分割。
c)CORBA基础设施开发者与CORBA“受益者”的分割。
CORBA基本服务为基于CORBA的分布式软件开发提供了对象级别的服务,在CORBA中,有16种基本服务,如LifecycleService,RelationshipService,NamingService等。
CORBA工具集(CORBAFacilities)为基于CORBA的分布式软件开发提供了应用级别的服务,CORBA工具集被分为横向工具集和纵向工具集。横向工具集由以下四部分组成:用户界面、信息管理、系统管理和任务管理。纵向工具集包括以下五个领域:医疗保健、金融服务、电讯、电子商务和制造。
1.1.2COM/DCOM体系结构
DCOM的组件创建和通信都依赖于COM运行库,而分布在网络中的DCOM组件还要借助于DCOM网络协议,体系结构如图2所示[2]。COM运行库在整个COM对象体系中处于核心地位,充当了组件程序和客户程序之间的桥梁,尤其是在组件对象的创建过程中,以及在对象管理、内存管理和一些标准化操作等方面起着重要的作用。安全提供器提供了一种表示安全角色(一般为用户账号)的方法、一种鉴定安全角色(一般通过口令或私有钥匙)的方法,以及管理安全角色和其鉴定数据的一套机制。如果一个用户要访问被保护的资源,则他必须把其安全角色或鉴定数据传递到资源,然后资源请求安全提供器对客户进行鉴别。DCERPC(分布式计算环境、远程过程调用)和协议栈共同完成网络环境下的列集和散集处理。
1.2实现机理
1.2.1CORBA实现机理
CORBA使用接口定义语言IDL定义服务和对象方法,借助ORB这些定义可以在任何编程语言、代码模块中实现。客户对方法、服务的请求,并不是直接传递给被请求服务器,而是调用存在于客户端中一个称为Stub的对象,再由Stub对象把请求转交给ORB,由ORB检查服务器的位置、状态,决定服务绑定的方式。Stub对象通过ORB把数据Marshaling到服务端的机器时,在服务端的Skeleton对象便会把这些Marshaling数据"还原"成服务端机器使用的正确格式,然后Skeleton对象便会根据客户端要求的服务调用CORBA对象,最后当服务端的CORBA对象执行完毕,就会通过Skeleton对象把结果再Marshaling回传给客户端的Stub对象,经由Stub对象恢复数据格式后,再回传给客户端应用程序。
1.2.2COM/DCOM实现机理
COM/DCOM的实现机理就像一个剖开的洋葱[3],由里到外所采用的技术分别为Windows、编程语言、COM/DCOM、Transactionserver、消息服务和群集服务。COM/DCOM这种技术本身并不能单独实现真正的分布式编程,而要同时采用MicrosoftTransactionServer,消息服务,群集服务等技术。
1.3其他
COM/DCOM与CORBA仍然有许多相异的地方以及能力上的差异。如CORBA具有负载平衡、容错能力和对象位置透明性,而COM/DCOM则根本不具备这些能力。至于命名机制和触发事件机制,COM/DCOM的功能也比CORBA要弱。2变电管理信息系统的组成
通过对系统需求的分析,决定采用C/S和B/S两种模式混合的模式进行具体应用系统的设计与实现。系统的体系结构如图3所示。在本项目中,C/S方式主要完成变电所所内信息管理和数据上报工作,它的实现框架对应于体系结构图中的下半部分。B/S方式主要实现数据的发布与浏览,它的实现框架对应于体系结构图的上半部分。其中,CORBA对象充当系统的中间件和核心,负责远程数据的查询以及更新等任务,借助于ORB具有位置透明性和动态定位等特性。本地C/S客户通过调用接口来和CORBA对象进行通信和数据交流,主要负责变电站日常信息管理如设备信息管理、设备缺陷管理、事故故障管理、检修记录管理等工作,并提取出上报数据适时进行递交。而上报数据则通过CGIWEB程序借助于同一个CORBA对象进行Intranet发布,实现数据的网上浏览与查询。
3系统实现
3.1CORBA对象的实现
CORBA对象本身为DELPHI5.5开发的CORBADataModule,通过ADO连接到后台MSSQL
这些接口内的方法由客户程序进行调用,完成远程数据的更新与浏览。CORBA服务器中的同步模块,主要利用组播技术实现客户与服务器端数据同步任务。具体实现时首先定义如下的接口方法:voidsynchronize(inwstringregion,inwstringstation,inwstringtbname,inoutanydetaildata);有同步需求时,就向客户组播同步消息,客户端接收到组播消息后,从本地数据库提取数据,然后调用接口方法传送给服务器实现数据同步。
3.2客户端实现
客户端调用服务器端的接口方法实现远程数据上报和浏览查询。其中接收同步消息和完成数据同步的核心代码为:
4结论
本文介绍的变电站管理系统采用C/S和B/S两种模式混合的模式,C/S方式主要完成变电所所内信息管理和数据上报工作,B/S方式主要实现数据的发布与浏览。该系统采用CORBA对象作为中间件,完成远程数据的查询以及更新等任务。由于该系统采用组件的程序设计方法使其具有可扩充性、可扩展性以及维护方便等特点。
参考文献
[1]潘爱民.COM原理与应用.清华大学出版社.2000.3
[2]OMG.TheCommonObjectRequestBroker:ArchitectureandSpecification.电子工业出版社2000.6.
[3]刘晖,沈钧毅,林欣.用CORBA创建电子商务系统.北京希望电子出版社.2000.继电器