成玉榮,王聰麗
(1.中國(guó)電子科技集團(tuán)公司第五十四研究所,河北石家莊050081;2.軍械工程學(xué)院,河北石家莊050003)
CORBA是由對(duì)象管理組織OMG制定的分布式體系結(jié)構(gòu),主要是為了解決異構(gòu)的分布式處理環(huán)境中系統(tǒng)互連而提出的一種方案。基于CORBA平臺(tái)能夠?qū)崿F(xiàn)不同應(yīng)用程序之間的透明交互,隨著網(wǎng)絡(luò)結(jié)構(gòu)的日益復(fù)雜化,CORBA的應(yīng)用越來(lái)越廣泛,在面向服務(wù)的SOA系統(tǒng)中是很好的服務(wù)組件的開(kāi)發(fā)平臺(tái)。
目前基于CORBA規(guī)范的產(chǎn)品很多,較流行的有Orbix2000、TAO 、Visibroker、InforBus和 InterBus等 ,這些產(chǎn)品以其各自的特點(diǎn)應(yīng)用于不同的對(duì)象請(qǐng)求代理(ORB)系統(tǒng)中,其中TAO為開(kāi)源的ORB平臺(tái),其功能的實(shí)時(shí)性、軟件的可配置性與可擴(kuò)展性使其在許多大規(guī)模的通信、計(jì)算機(jī)公司得以廣泛應(yīng)用。
TAO是由美國(guó)華盛頓大學(xué)分布式對(duì)象計(jì)算組織開(kāi)發(fā)的開(kāi)放源碼的CORBA產(chǎn)品,其實(shí)現(xiàn)基于可適應(yīng)通信環(huán)境(ACE)。ACE是一種免費(fèi)開(kāi)放源碼的面向?qū)ο罂蚣芙Y(jié)構(gòu),該結(jié)構(gòu)實(shí)現(xiàn)通信軟件的核心并發(fā)和分布模式。TAO系統(tǒng)中含有網(wǎng)絡(luò)接口、OS、通信協(xié)議以及遵循CORBA的中間件組件和服務(wù)等,其系統(tǒng)結(jié)構(gòu)如圖1所示。
圖1 TAO的系統(tǒng)結(jié)構(gòu)
其系統(tǒng)結(jié)構(gòu)特點(diǎn)如下:
①TAO實(shí)現(xiàn)了CORBA 2.6規(guī)范中的說(shuō)明,具有規(guī)范性和通用性,能夠與其他同標(biāo)準(zhǔn)的ORB產(chǎn)品進(jìn)行互通互聯(lián);
②TAO基于ACE實(shí)現(xiàn)的ORB具有更加靈活、高效、事件驅(qū)動(dòng)和并發(fā)的特點(diǎn);
③TAO基于ACE實(shí)現(xiàn),具有一些增強(qiáng)特性,可用于確保高性能及實(shí)時(shí)應(yīng)用的高效、可預(yù)測(cè)和可伸縮的QoS行為;
④ACE提供開(kāi)源的C++組件包,使TAO具有更強(qiáng)的可擴(kuò)展性和靈活性;
⑤TAO是高性能實(shí)時(shí)ORB終端系統(tǒng),能夠很好地適用于異構(gòu)的分布式應(yīng)用環(huán)境。
通過(guò)分析TAO的結(jié)構(gòu)特點(diǎn),TAO的實(shí)時(shí)性與靈活性適合開(kāi)發(fā)分布式、可擴(kuò)展的應(yīng)用軟件。TAO的安裝可根據(jù)工程需求進(jìn)行配置,選擇所需要的組件進(jìn)行編譯配置,降低資源占用,提高軟件運(yùn)行效率。
TAO在VC5.0、VC6.0和 visual studio2008中均可以編譯,TAO可以被編譯成DLL版(動(dòng)態(tài)鏈接)和LIB版(靜態(tài)鏈接)2種版本,根據(jù)應(yīng)用需求通過(guò)工程參數(shù)配置進(jìn)行控制。
基于TAO開(kāi)發(fā)應(yīng)用程序時(shí),需要在應(yīng)用程序的工程配置選項(xiàng)中設(shè)置所用的TAO的庫(kù)文件、頭文件以及執(zhí)行文件的路徑。
應(yīng)用程序設(shè)計(jì)是基于已編譯好的TAO環(huán)境進(jìn)行工程開(kāi)發(fā),具體流程如圖2所示。
圖2 基于TAO的應(yīng)用程序開(kāi)發(fā)流程
圖2中主要步驟包括:設(shè)計(jì)和編譯接口定義語(yǔ)言(IDL)接口、設(shè)計(jì)和編譯客戶端應(yīng)用程序、設(shè)計(jì)和編譯服務(wù)器端應(yīng)用程序。
2.2.1 IDL接口設(shè)計(jì)與編譯
CORBA應(yīng)用程序開(kāi)發(fā),首先要用IDL定義服務(wù)對(duì)象的公共接口,IDL是一種描述性語(yǔ)言,可以映射成各種編程語(yǔ)言,TAO支持IDL到C++語(yǔ)言的映射,由TAO的IDL編譯器完成。編譯后生成客戶端存根文件和服務(wù)端框架文件,為客戶端和服務(wù)端的軟件開(kāi)發(fā)提供基本軟件框架。
2.2.2 客戶端軟件設(shè)計(jì)
客戶端應(yīng)用軟件設(shè)計(jì)是在IDL編譯器生成的客戶方框架代碼的基礎(chǔ)上,根據(jù)應(yīng)用需要設(shè)計(jì)ORB接口調(diào)用處理流程,實(shí)現(xiàn)客戶端對(duì)服務(wù)端的方法調(diào)用的應(yīng)用。客戶端框架代碼相當(dāng)于服務(wù)對(duì)象在客戶端的代理,是能夠?qū)⒈镜卣?qǐng)求轉(zhuǎn)換為網(wǎng)絡(luò)請(qǐng)求的ORB專用對(duì)象接口的框架代碼。其調(diào)用請(qǐng)求通過(guò)ORB完成,可以由ORB定位所調(diào)用的服務(wù)對(duì)象,因此,客戶端應(yīng)用程序無(wú)需知道服務(wù)端應(yīng)用程序用何種語(yǔ)言實(shí)現(xiàn),運(yùn)行于何種操作系統(tǒng)平臺(tái)上。
客戶端與服務(wù)器端的請(qǐng)求響應(yīng)方式分為同步方式和異步方式,客戶端根據(jù)軟件的實(shí)時(shí)性需求可采用合適的請(qǐng)求響應(yīng)方式,另外客戶端還可通過(guò)事件或通知的方式接收服務(wù)器端主動(dòng)上報(bào)的信息。
下面以同步調(diào)用方式介紹客戶端應(yīng)用程序的開(kāi)發(fā)流程,詳細(xì)流程如圖3所示。
圖3 客戶端軟件開(kāi)發(fā)流程
2.2.3 服務(wù)端軟件設(shè)計(jì)
服務(wù)端應(yīng)用軟件設(shè)計(jì)就是在服務(wù)端框架代碼的基礎(chǔ)上,根據(jù)應(yīng)用需求,采用合適的軟件架構(gòu),設(shè)計(jì)服務(wù)端軟件運(yùn)行流程,實(shí)現(xiàn)服務(wù)對(duì)象接口類及其方法的過(guò)程。服務(wù)端框架代碼是IDL編譯器生成的一系列代碼文件,能夠幫助對(duì)象適配器將一個(gè)請(qǐng)求傳遞到指定對(duì)象實(shí)現(xiàn)。服務(wù)方程序是一個(gè)擁有1個(gè)或多個(gè)CORBA對(duì)象的應(yīng)用程序,通過(guò)對(duì)象實(shí)現(xiàn)向客戶方提供方法調(diào)用結(jié)果。
服務(wù)端作為客戶端的方法實(shí)現(xiàn)集,其響應(yīng)客戶端調(diào)用的方式可分為同步和異步2種方式,另外還可以主動(dòng)向客戶端發(fā)送事件或通知與客戶端進(jìn)行信息傳輸。
服務(wù)端的應(yīng)用軟件包含IDL生成的框架程序、對(duì)象實(shí)現(xiàn)類程序和服務(wù)方主程序。
首先應(yīng)創(chuàng)建服務(wù)對(duì)象實(shí)現(xiàn)類,類定義文件中應(yīng)包含IDL編譯生成的服務(wù)器框架頭文件,實(shí)現(xiàn)文件要實(shí)現(xiàn)對(duì)象方法的處理。
服務(wù)方主程序主要包括ORB的初始化、對(duì)象實(shí)例的創(chuàng)建和生成對(duì)象引用等處理。服務(wù)端軟件的總體設(shè)計(jì)流程如圖4所示。
圖4 服務(wù)器端軟件開(kāi)發(fā)流程
基于CORBA的綜合網(wǎng)絡(luò)管理系統(tǒng)采用TAO為ORB平臺(tái)進(jìn)行開(kāi)發(fā),主要完成在網(wǎng)絡(luò)層之上對(duì)各種被管設(shè)備或被管子系統(tǒng)對(duì)象的管理。各管理服務(wù)和監(jiān)控臺(tái)間通過(guò)基于TAO的ORB總線進(jìn)行信息交互,提高管理服務(wù)的可擴(kuò)展性;另外該系統(tǒng)采用代理的方式屏蔽被管對(duì)象與綜合網(wǎng)管間接口的差異性,各代理與綜合網(wǎng)管服務(wù)間為CORBA接口,通過(guò)ORB總線進(jìn)行信息交互,其系統(tǒng)結(jié)構(gòu)如圖5所示。
圖5 基于TAO的綜合網(wǎng)管軟件結(jié)構(gòu)
基于TAO的綜合網(wǎng)管系統(tǒng)所實(shí)現(xiàn)的功能主要包括:
①查詢各被管對(duì)象的配置參數(shù),進(jìn)行綜合、顯示和存儲(chǔ)等處理;
②查詢各被管對(duì)象的故障信息,進(jìn)行綜合、統(tǒng)計(jì)和分析等處理;
③查詢各被管對(duì)象的性能信息,進(jìn)行綜合、分析、統(tǒng)計(jì)和存儲(chǔ)等處理;
④網(wǎng)管系統(tǒng)用戶創(chuàng)建及刪除、用戶組創(chuàng)建及刪除和用戶日志等維護(hù)管理;
⑤用戶權(quán)限和用戶認(rèn)證等系統(tǒng)安全操作管理。
基于TAO提供的ORB平臺(tái),綜合網(wǎng)絡(luò)管理系統(tǒng)采用模塊化結(jié)構(gòu),各管理服務(wù)以組件的方式掛接在ORB總線上,并根據(jù)應(yīng)用需要配置TAO的C++庫(kù),提高了系統(tǒng)的可擴(kuò)展性和軟件重用性;代理主要完成各被管對(duì)象的接口歸一化,并與綜合服務(wù)器交互管理信息,所用到的ORB服務(wù)很少,所以采用TAO的最簡(jiǎn)配置完成CORBA接口的信息交互,節(jié)省資源占用,提高系統(tǒng)效率。
通過(guò)工程應(yīng)用實(shí)踐,驗(yàn)證了基于TAO進(jìn)行CORBA應(yīng)用軟件開(kāi)發(fā)具有如下優(yōu)點(diǎn):
①基于規(guī)范性的接口開(kāi)發(fā)CORBA應(yīng)用軟件能夠提高與其他CORBA產(chǎn)品應(yīng)用軟件的互操作性,從而提高軟件的通用性和規(guī)范性;
②基于TAO開(kāi)發(fā)的應(yīng)用程序具有與應(yīng)用平臺(tái)、物理地址和開(kāi)發(fā)語(yǔ)言的無(wú)關(guān)性,提高了軟件的可移植性以及應(yīng)用軟件間互操作的透明性;
③TAO是開(kāi)源的CORBA產(chǎn)品,提供了對(duì)C++的聯(lián)編,方便了C++應(yīng)用程序的開(kāi)發(fā),提高了軟件的可配置性和可擴(kuò)展性,降低了軟件開(kāi)發(fā)成本;
④基于TAO開(kāi)發(fā)的應(yīng)用軟件模塊化強(qiáng),提高了軟件的靈活性和可重用性。
CORBA是一個(gè)規(guī)范,提供了一個(gè)允許在分布式和異構(gòu)型環(huán)境中應(yīng)用程序之間進(jìn)行互操作的框架。TAO實(shí)現(xiàn)了CORBA規(guī)范,為應(yīng)用程序提供了透明的ORB操作平臺(tái)?;赥AO開(kāi)發(fā)的應(yīng)用對(duì)象可以與其他CORBA規(guī)范的實(shí)現(xiàn)對(duì)象進(jìn)行互操作,屏蔽了異構(gòu)環(huán)境下操作系統(tǒng)、開(kāi)發(fā)語(yǔ)言和運(yùn)行環(huán)境的種種差異性,另外TAO具有較強(qiáng)的可擴(kuò)展性,提高了應(yīng)用系統(tǒng)的靈活性、適應(yīng)性和可重用性,提高了開(kāi)發(fā)效率,降低了開(kāi)發(fā)成本。
[1]ITU-T Q.816 CORBA-based TMN services[S],2001.
[2]MICHI H,STEVE V.基于C++CORBA高級(jí)編程[M].徐金梧,徐 科,呂志民,譯.北京:清華大學(xué)出版社,2000.