趙 瑜,劉 勇,孔 捷
(海軍裝備研究院,北京100161)
隨著新技術(shù)、新業(yè)務(wù)的不斷引入,通信網(wǎng)的復(fù)雜性日益增大,傳統(tǒng)的網(wǎng)絡(luò)管理系統(tǒng)需要具有良好的跨平臺(tái)性和可擴(kuò)展性,支持靈活的業(yè)務(wù)擴(kuò)充,以適應(yīng)網(wǎng)絡(luò)的不斷發(fā)展。中間件技術(shù)能夠屏蔽底層平臺(tái)的異構(gòu)性,具有良好的跨平臺(tái)性;組件式軟件架構(gòu)提供組件的靈活組裝配置,具有良好的可擴(kuò)展性和重用性,能夠滿(mǎn)足網(wǎng)絡(luò)不斷發(fā)展對(duì)網(wǎng)絡(luò)管理軟件的靈活可變的要求。CORBA技術(shù)作為跨平臺(tái)的中間件技術(shù),可以屏蔽編程語(yǔ)言和操作系統(tǒng)等異質(zhì)性;另外能夠提供一致的接口,為組件式軟件開(kāi)發(fā)提供了組件封裝和組件間互通手段,因此基于CORBA的組件式網(wǎng)管架構(gòu)能夠?qū)崿F(xiàn)分布式、跨平臺(tái)以及可擴(kuò)展的能力。
組件是軟件系統(tǒng)中具有獨(dú)立功能、高內(nèi)聚性的結(jié)構(gòu)塊單元,是軟件功能設(shè)計(jì)和實(shí)現(xiàn)的承載體。一個(gè)軟件組件是由契約性接口說(shuō)明和明確性上下文相關(guān)的軟件單元組成,軟件組件區(qū)別于軟件模塊的最大特點(diǎn)是組件的功能獨(dú)立性、高度的可重用性、與語(yǔ)言和平臺(tái)的無(wú)關(guān)性等特點(diǎn)。
CORBA組件模型是基于對(duì)象組織管理(OMG)組織所提出的CORBA規(guī)范設(shè)計(jì)的組件模型,CORBA是分布式對(duì)象計(jì)算規(guī)范[2],將面向?qū)ο蠹夹g(shù)應(yīng)用于分布式計(jì)算環(huán)境。CORBA規(guī)范中的接口定義語(yǔ)言(IDL)屏蔽了應(yīng)用程序間開(kāi)發(fā)環(huán)境的差異性,其良好的結(jié)構(gòu)化定義規(guī)范為功能組件的快捷封裝提供了手段;另外基于對(duì)象請(qǐng)求代理(ORB)的通信調(diào)用方式為組件的裝配和信息交互提供了總線式的管理方法?;贑ORBA的組件結(jié)構(gòu)如圖1所示。
圖1 基于CORBA的組件結(jié)構(gòu)
通過(guò)CORBA組件結(jié)構(gòu)的描述,可總結(jié)其主要特點(diǎn)如下:
①基于CORBA的組件設(shè)計(jì)中,ORB提供了軟件總線管理機(jī)制,便于各功能組件間的透明交互;
②將分布式計(jì)算同面向?qū)ο蟮母拍钕嗷ソY(jié)合,提供了面向?qū)ο蟮慕M件式設(shè)計(jì)結(jié)構(gòu);
③組件的功能獨(dú)立性提高了軟件的可擴(kuò)展性和可重用性,為提高軟件開(kāi)發(fā)效率奠定基礎(chǔ);
④CORBA提供了組件封裝的統(tǒng)一接口標(biāo)準(zhǔn),提高了軟件的規(guī)范性。
基于CORBA進(jìn)行組件式軟件設(shè)計(jì)主要包括4個(gè)步驟:定義軟件框架及組件構(gòu)成、構(gòu)建組件模型、定義封裝接口和軟件實(shí)現(xiàn)與集成。其中構(gòu)建組件模型是組件式軟件設(shè)計(jì)的關(guān)鍵,組件設(shè)計(jì)的原則如下:
①組件內(nèi)部依據(jù)高內(nèi)聚原則,由一系列小的緊耦合的功能單元組成獨(dú)立程序[6];
②組件通常設(shè)計(jì)為獨(dú)立運(yùn)行的功能進(jìn)程,采用統(tǒng)一的接口定義語(yǔ)言進(jìn)行封裝;
③組件間主要通過(guò)定義接口進(jìn)行信息交互與操作調(diào)用;
④一個(gè)網(wǎng)管系統(tǒng)的各組件可以根據(jù)應(yīng)用需求進(jìn)行組裝,提供組裝配置手段;
⑤組件的版本變化后,可以單個(gè)組件更新版本,不影響整個(gè)系統(tǒng)軟件架構(gòu)。
基于TMN的網(wǎng)絡(luò)管理體系架構(gòu)[1],網(wǎng)絡(luò)管理系統(tǒng)基本功能組件包括:故障綜合與分析組件、性能采集與統(tǒng)計(jì)組件、參數(shù)配置與維護(hù)組件、安全日志審計(jì)組件和事務(wù)管理組件等,因?yàn)镮DL具有平臺(tái)無(wú)關(guān)性,各組件采用CORBA IDL進(jìn)行外部接口封裝。
根據(jù)組件內(nèi)部高內(nèi)聚的原則,組件內(nèi)部功能單元采用面向?qū)ο笳Z(yǔ)言(如:C++、Java)進(jìn)行定義,功能單元間采用高效率的API調(diào)用接口進(jìn)行交互。下面以C++語(yǔ)言定義故障綜合與分析組件內(nèi)部為例,說(shuō)明組件內(nèi)部功能模型的設(shè)計(jì)方法。故障綜合與分析組件定義故障通用管理類(lèi)(AlarmManager)、狀態(tài)采集類(lèi)(StateQuery)、故障等級(jí)過(guò)濾分析類(lèi)(Alarm-Filter)、故障綜合類(lèi)(AlarmSynthesize)和故障變化上報(bào)類(lèi)(AlarmReport),類(lèi)之間關(guān)系如圖2所示。
圖2 組件內(nèi)部對(duì)象類(lèi)關(guān)系
根據(jù)組件功能模型,利用CORBA產(chǎn)品提供的IDL接口定義語(yǔ)音完成各組件的對(duì)外封裝接口的定義,確定組件間接口關(guān)系。為了將便于組件的統(tǒng)一管理和組件間的信息交互,定義公共屬性及功能組件,該組件中定義公共父接口Common_I接口,接口內(nèi)定義各組件統(tǒng)一的注冊(cè)方法和數(shù)據(jù)類(lèi)型。各功能組件根據(jù)功能實(shí)現(xiàn)分別定義功能域(module)、子功能接口(interface)和接口中的方法(method),方法所用到的數(shù)據(jù)類(lèi)型根據(jù)其使用范圍定義在module或interface中。
以故障綜合與分析組件為例說(shuō)明組件外部接口的封裝定義。首先定義故障管理為功能域,在該功能域中可以定義域中公共的數(shù)據(jù)類(lèi)型,定義FaultManager_I子功能接口,主要完成故障信息采集、過(guò)濾設(shè)置與綜合等方法;定義FaultInform_I子功能接口,主要完成故障上報(bào)和告警參數(shù)變化上報(bào)等方法;另外在每個(gè)接口內(nèi)可以定義該接口用到的數(shù)據(jù)類(lèi)型,子功能接口需派生于Common_I接口,用于完成統(tǒng)一注冊(cè)。
基于CORBA的網(wǎng)絡(luò)管理軟件通過(guò)IDL完成功能接口描述后,即可以通過(guò)CORBA產(chǎn)品平臺(tái)實(shí)現(xiàn)各功能接口的方法及調(diào)用等處理。
2.3.1 生成IDL框架
通過(guò)CORBA產(chǎn)品的IDL編譯器能夠由已定義的IDL文件生成客戶(hù)端存根代碼和服務(wù)器端框架代碼,2個(gè)部分代碼為軟件功能處理的實(shí)現(xiàn)提供基本框架,在此框架基礎(chǔ)上實(shí)現(xiàn)各種操作的處理[3]。
2.3.2 服務(wù)端及客戶(hù)端編碼實(shí)現(xiàn)
根據(jù)IDL框架,分別編寫(xiě)服務(wù)端和客戶(hù)端應(yīng)用軟件,其中服務(wù)端軟件實(shí)現(xiàn)就是在服務(wù)端框架代碼的基礎(chǔ)上,根據(jù)應(yīng)用需求設(shè)計(jì)服務(wù)端軟件運(yùn)行流程,實(shí)現(xiàn)服務(wù)對(duì)象接口類(lèi)及其方法。服務(wù)端的應(yīng)用軟件包含IDL生成的框架程序、對(duì)象實(shí)現(xiàn)類(lèi)程序和服務(wù)主程序??蛻?hù)端軟件實(shí)現(xiàn)是在客戶(hù)方框架代碼的基礎(chǔ)上,根據(jù)應(yīng)用需要設(shè)計(jì)ORB接口調(diào)用處理流程,實(shí)現(xiàn)客戶(hù)端對(duì)服務(wù)端的方法調(diào)用的應(yīng)用[5]。
2.3.3 功能接口對(duì)象注冊(cè)及對(duì)象獲取
服務(wù)端的功能接口及方法實(shí)現(xiàn)后,需通過(guò)Common_I公共接口中的注冊(cè)方法,將服務(wù)端實(shí)現(xiàn)的接口注冊(cè)到入口對(duì)象上,客戶(hù)端可以通過(guò)命名服務(wù)得到服務(wù)端入口對(duì)象,進(jìn)而通過(guò)入口對(duì)象提供的獲取功能接口的方法,得到所需的功能接口對(duì)象。
2.3.4 獲取服務(wù)端對(duì)象方法實(shí)現(xiàn)
客戶(hù)端需要調(diào)用服務(wù)端服務(wù)對(duì)象方法時(shí),能夠通過(guò)獲取到的服務(wù)對(duì)象,調(diào)用該對(duì)象提供的方法,從而完成服務(wù)端與客戶(hù)端的服務(wù)調(diào)用,其請(qǐng)求調(diào)用通過(guò)ORB完成,可以由ORB定位所調(diào)用的服務(wù)對(duì)象,因此,客戶(hù)端應(yīng)用程序無(wú)需知道服務(wù)端應(yīng)用程序用何種語(yǔ)言實(shí)現(xiàn),運(yùn)行于何種操作系統(tǒng)平臺(tái)上。
電信管理論壇TMF多技術(shù)網(wǎng)絡(luò)管理(Multi-Technology Network Management,MTNM)團(tuán) 隊(duì) 在CORBA技術(shù)方面,為解決多技術(shù)管理問(wèn)題提出了專(zhuān)門(mén)的解決方案[4],定義了基于CORBA的NMS(網(wǎng)絡(luò)管理系統(tǒng))與EMS(網(wǎng)元管理系統(tǒng))之間的標(biāo)準(zhǔn)接口,按此標(biāo)準(zhǔn)能夠?qū)崿F(xiàn)多廠商網(wǎng)絡(luò)管理系統(tǒng)之間的互聯(lián)互通,屏蔽了各廠家產(chǎn)品的底層差異性。但是,隨著網(wǎng)絡(luò)業(yè)務(wù)的增多及網(wǎng)絡(luò)組織的復(fù)雜化,雖然基于TMF標(biāo)準(zhǔn)屏蔽了多廠商間的互通問(wèn)題,仍然不能解決網(wǎng)絡(luò)管理系統(tǒng)適應(yīng)網(wǎng)絡(luò)快速發(fā)展的問(wèn)題,采用基于組件的快速設(shè)計(jì)開(kāi)發(fā)方法,能夠提高軟件的可擴(kuò)展性、靈活性和可重用性。
隨著SDH網(wǎng)絡(luò)業(yè)務(wù)的增多,傳統(tǒng)的SDH網(wǎng)絡(luò)管理系統(tǒng)已不能適應(yīng)網(wǎng)絡(luò)業(yè)務(wù)及結(jié)構(gòu)不斷發(fā)展變化的需求,在某SDH網(wǎng)絡(luò)管理系統(tǒng)項(xiàng)目中,采用了基于CORBA組件的網(wǎng)絡(luò)管理構(gòu)建方法,通過(guò)分析被管對(duì)象模型和管理需求,設(shè)計(jì)了基本功能組件、業(yè)務(wù)管理組件和被管對(duì)象相關(guān)的系列管理組件,根據(jù)被管網(wǎng)絡(luò)環(huán)境不同,可以進(jìn)行組件的靈活組裝配置,大大提高了軟件的可擴(kuò)展性和靈活性,實(shí)現(xiàn)了系統(tǒng)對(duì)被管網(wǎng)絡(luò)的靈活管理。
3.2.1 被管對(duì)象模型
SDH網(wǎng)絡(luò)管理系統(tǒng)的被管對(duì)象主要包括:網(wǎng)絡(luò)系統(tǒng)、子網(wǎng)、網(wǎng)元、拓?fù)溥B接、設(shè)備和端口部件等,繼承關(guān)系如圖3所示。
圖3 被管對(duì)象繼承關(guān)系模型
3.2.2 網(wǎng)管系統(tǒng)組件結(jié)構(gòu)
根據(jù)被管網(wǎng)絡(luò)的對(duì)象模型、通信業(yè)務(wù)應(yīng)用和管理需求,SDH網(wǎng)絡(luò)管理系統(tǒng)的組件設(shè)計(jì)可分為特定管理業(yè)務(wù)組件設(shè)計(jì)和通用管理組件設(shè)計(jì)。特定管理業(yè)務(wù)組件往往是針對(duì)具體的對(duì)象管理應(yīng)用,主要按照其管理對(duì)象模型,對(duì)不同對(duì)象的特有操作進(jìn)行封裝,例如網(wǎng)元配置管理組件和設(shè)備管理組件等;對(duì)于通用管理組件,如系統(tǒng)用戶(hù)管理和告警采集分析等,在設(shè)計(jì)時(shí)可以多考慮重用性?;贑ORBA組件的SDH管理系統(tǒng)可定義的組件及結(jié)構(gòu)如圖4所示。
圖4 基于CORBA的SDH網(wǎng)絡(luò)管理系統(tǒng)組件結(jié)構(gòu)
3.2.3 接口關(guān)系
為了便于組件的統(tǒng)一注冊(cè)、維護(hù)與管理以及接口間通用數(shù)據(jù)類(lèi)型的統(tǒng)一定義,設(shè)計(jì)公共注冊(cè)維護(hù)組件接口Common_I,其他管理組件包括:網(wǎng)絡(luò)拓?fù)涔芾斫M件接口SubnetTopoMgr_I和故障管理接口FaultInfoMgr_I等,針對(duì)業(yè)務(wù)方面的組件:通信業(yè)務(wù)管理組件接口CommuServiceMgr_I、電路資源管理組件接口 EResourceMgr_I和鏈路管理組件接口TopoLinkMgr_I等作為可擴(kuò)展組件接口,各管理組件接口均繼承于Common_I,并基于Common_I的注冊(cè)方法進(jìn)行組件注冊(cè)、啟動(dòng)和注銷(xiāo),實(shí)現(xiàn)組件的靈活配置。
CORBA提供了一種允許在分布式和異構(gòu)環(huán)境中構(gòu)建組件模型的框架,基于CORBA開(kāi)發(fā)的組件式應(yīng)用系統(tǒng)可以透明地進(jìn)行互操作,屏蔽了異構(gòu)環(huán)境下操作系統(tǒng)和開(kāi)發(fā)語(yǔ)言等種種差異性,具有更高的靈活性、可擴(kuò)展性和重用性,能夠適應(yīng)復(fù)雜的、異構(gòu)的和分布式的應(yīng)用系統(tǒng)。
[1]OMG編著.CORBA系統(tǒng)結(jié)構(gòu)、原理與規(guī)范[M].韋樂(lè)平,薛君敖,孟洛明,譯.北京:電子工業(yè)出版社,2000.
[2]鄒三庚.基于組件的軟件技術(shù)及其在信息系統(tǒng)建設(shè)中的應(yīng)用[J].中國(guó)無(wú)線電,2009(3):39-40.
[3] ITU-T Q.816.CORBA-based TMN Services[S],2001.
[4]MICHI H,STEVE V.基于C++CORBA 高級(jí)編程[M].徐金梧,徐 科,呂志民,譯.北京:清華大學(xué)出版社,2000.
[5]成玉榮,王聰麗.基于TAO的CORBA應(yīng)用軟件設(shè)計(jì)[J].無(wú)線電工程,2010,4(11):13-15.
[6] TMF814Av2.1 TM FORUM MTNM.Implementation Statement(IS)Template and Guidelines[S],2002.