趙 瑜,劉 勇,孔 捷
(海軍裝備研究院,北京100161)
隨著新技術、新業務的不斷引入,通信網的復雜性日益增大,傳統的網絡管理系統需要具有良好的跨平臺性和可擴展性,支持靈活的業務擴充,以適應網絡的不斷發展。中間件技術能夠屏蔽底層平臺的異構性,具有良好的跨平臺性;組件式軟件架構提供組件的靈活組裝配置,具有良好的可擴展性和重用性,能夠滿足網絡不斷發展對網絡管理軟件的靈活可變的要求。CORBA技術作為跨平臺的中間件技術,可以屏蔽編程語言和操作系統等異質性;另外能夠提供一致的接口,為組件式軟件開發提供了組件封裝和組件間互通手段,因此基于CORBA的組件式網管架構能夠實現分布式、跨平臺以及可擴展的能力。
組件是軟件系統中具有獨立功能、高內聚性的結構塊單元,是軟件功能設計和實現的承載體。一個軟件組件是由契約性接口說明和明確性上下文相關的軟件單元組成,軟件組件區別于軟件模塊的最大特點是組件的功能獨立性、高度的可重用性、與語言和平臺的無關性等特點。
CORBA組件模型是基于對象組織管理(OMG)組織所提出的CORBA規范設計的組件模型,CORBA是分布式對象計算規范[2],將面向對象技術應用于分布式計算環境。CORBA規范中的接口定義語言(IDL)屏蔽了應用程序間開發環境的差異性,其良好的結構化定義規范為功能組件的快捷封裝提供了手段;另外基于對象請求代理(ORB)的通信調用方式為組件的裝配和信息交互提供了總線式的管理方法。基于CORBA的組件結構如圖1所示。

圖1 基于CORBA的組件結構
通過CORBA組件結構的描述,可總結其主要特點如下:
①基于CORBA的組件設計中,ORB提供了軟件總線管理機制,便于各功能組件間的透明交互;
②將分布式計算同面向對象的概念相互結合,提供了面向對象的組件式設計結構;
③組件的功能獨立性提高了軟件的可擴展性和可重用性,為提高軟件開發效率奠定基礎;
④CORBA提供了組件封裝的統一接口標準,提高了軟件的規范性。
基于CORBA進行組件式軟件設計主要包括4個步驟:定義軟件框架及組件構成、構建組件模型、定義封裝接口和軟件實現與集成。其中構建組件模型是組件式軟件設計的關鍵,組件設計的原則如下:
①組件內部依據高內聚原則,由一系列小的緊耦合的功能單元組成獨立程序[6];
②組件通常設計為獨立運行的功能進程,采用統一的接口定義語言進行封裝;
③組件間主要通過定義接口進行信息交互與操作調用;
④一個網管系統的各組件可以根據應用需求進行組裝,提供組裝配置手段;
⑤組件的版本變化后,可以單個組件更新版本,不影響整個系統軟件架構。
基于TMN的網絡管理體系架構[1],網絡管理系統基本功能組件包括:故障綜合與分析組件、性能采集與統計組件、參數配置與維護組件、安全日志審計組件和事務管理組件等,因為IDL具有平臺無關性,各組件采用CORBA IDL進行外部接口封裝。
根據組件內部高內聚的原則,組件內部功能單元采用面向對象語言(如:C++、Java)進行定義,功能單元間采用高效率的API調用接口進行交互。下面以C++語言定義故障綜合與分析組件內部為例,說明組件內部功能模型的設計方法。故障綜合與分析組件定義故障通用管理類(AlarmManager)、狀態采集類(StateQuery)、故障等級過濾分析類(Alarm-Filter)、故障綜合類(AlarmSynthesize)和故障變化上報類(AlarmReport),類之間關系如圖2所示。

圖2 組件內部對象類關系
根據組件功能模型,利用CORBA產品提供的IDL接口定義語音完成各組件的對外封裝接口的定義,確定組件間接口關系。為了將便于組件的統一管理和組件間的信息交互,定義公共屬性及功能組件,該組件中定義公共父接口Common_I接口,接口內定義各組件統一的注冊方法和數據類型。各功能組件根據功能實現分別定義功能域(module)、子功能接口(interface)和接口中的方法(method),方法所用到的數據類型根據其使用范圍定義在module或interface中。
以故障綜合與分析組件為例說明組件外部接口的封裝定義。首先定義故障管理為功能域,在該功能域中可以定義域中公共的數據類型,定義FaultManager_I子功能接口,主要完成故障信息采集、過濾設置與綜合等方法;定義FaultInform_I子功能接口,主要完成故障上報和告警參數變化上報等方法;另外在每個接口內可以定義該接口用到的數據類型,子功能接口需派生于Common_I接口,用于完成統一注冊。
基于CORBA的網絡管理軟件通過IDL完成功能接口描述后,即可以通過CORBA產品平臺實現各功能接口的方法及調用等處理。
2.3.1 生成IDL框架
通過CORBA產品的IDL編譯器能夠由已定義的IDL文件生成客戶端存根代碼和服務器端框架代碼,2個部分代碼為軟件功能處理的實現提供基本框架,在此框架基礎上實現各種操作的處理[3]。
2.3.2 服務端及客戶端編碼實現
根據IDL框架,分別編寫服務端和客戶端應用軟件,其中服務端軟件實現就是在服務端框架代碼的基礎上,根據應用需求設計服務端軟件運行流程,實現服務對象接口類及其方法。服務端的應用軟件包含IDL生成的框架程序、對象實現類程序和服務主程序。客戶端軟件實現是在客戶方框架代碼的基礎上,根據應用需要設計ORB接口調用處理流程,實現客戶端對服務端的方法調用的應用[5]。
2.3.3 功能接口對象注冊及對象獲取
服務端的功能接口及方法實現后,需通過Common_I公共接口中的注冊方法,將服務端實現的接口注冊到入口對象上,客戶端可以通過命名服務得到服務端入口對象,進而通過入口對象提供的獲取功能接口的方法,得到所需的功能接口對象。
2.3.4 獲取服務端對象方法實現
客戶端需要調用服務端服務對象方法時,能夠通過獲取到的服務對象,調用該對象提供的方法,從而完成服務端與客戶端的服務調用,其請求調用通過ORB完成,可以由ORB定位所調用的服務對象,因此,客戶端應用程序無需知道服務端應用程序用何種語言實現,運行于何種操作系統平臺上。
電信管理論壇TMF多技術網絡管理(Multi-Technology Network Management,MTNM)團 隊 在CORBA技術方面,為解決多技術管理問題提出了專門的解決方案[4],定義了基于CORBA的NMS(網絡管理系統)與EMS(網元管理系統)之間的標準接口,按此標準能夠實現多廠商網絡管理系統之間的互聯互通,屏蔽了各廠家產品的底層差異性。但是,隨著網絡業務的增多及網絡組織的復雜化,雖然基于TMF標準屏蔽了多廠商間的互通問題,仍然不能解決網絡管理系統適應網絡快速發展的問題,采用基于組件的快速設計開發方法,能夠提高軟件的可擴展性、靈活性和可重用性。
隨著SDH網絡業務的增多,傳統的SDH網絡管理系統已不能適應網絡業務及結構不斷發展變化的需求,在某SDH網絡管理系統項目中,采用了基于CORBA組件的網絡管理構建方法,通過分析被管對象模型和管理需求,設計了基本功能組件、業務管理組件和被管對象相關的系列管理組件,根據被管網絡環境不同,可以進行組件的靈活組裝配置,大大提高了軟件的可擴展性和靈活性,實現了系統對被管網絡的靈活管理。
3.2.1 被管對象模型
SDH網絡管理系統的被管對象主要包括:網絡系統、子網、網元、拓撲連接、設備和端口部件等,繼承關系如圖3所示。

圖3 被管對象繼承關系模型
3.2.2 網管系統組件結構
根據被管網絡的對象模型、通信業務應用和管理需求,SDH網絡管理系統的組件設計可分為特定管理業務組件設計和通用管理組件設計。特定管理業務組件往往是針對具體的對象管理應用,主要按照其管理對象模型,對不同對象的特有操作進行封裝,例如網元配置管理組件和設備管理組件等;對于通用管理組件,如系統用戶管理和告警采集分析等,在設計時可以多考慮重用性。基于CORBA組件的SDH管理系統可定義的組件及結構如圖4所示。

圖4 基于CORBA的SDH網絡管理系統組件結構
3.2.3 接口關系
為了便于組件的統一注冊、維護與管理以及接口間通用數據類型的統一定義,設計公共注冊維護組件接口Common_I,其他管理組件包括:網絡拓撲管理組件接口SubnetTopoMgr_I和故障管理接口FaultInfoMgr_I等,針對業務方面的組件:通信業務管理組件接口CommuServiceMgr_I、電路資源管理組件接口 EResourceMgr_I和鏈路管理組件接口TopoLinkMgr_I等作為可擴展組件接口,各管理組件接口均繼承于Common_I,并基于Common_I的注冊方法進行組件注冊、啟動和注銷,實現組件的靈活配置。
CORBA提供了一種允許在分布式和異構環境中構建組件模型的框架,基于CORBA開發的組件式應用系統可以透明地進行互操作,屏蔽了異構環境下操作系統和開發語言等種種差異性,具有更高的靈活性、可擴展性和重用性,能夠適應復雜的、異構的和分布式的應用系統。
[1]OMG編著.CORBA系統結構、原理與規范[M].韋樂平,薛君敖,孟洛明,譯.北京:電子工業出版社,2000.
[2]鄒三庚.基于組件的軟件技術及其在信息系統建設中的應用[J].中國無線電,2009(3):39-40.
[3] ITU-T Q.816.CORBA-based TMN Services[S],2001.
[4]MICHI H,STEVE V.基于C++CORBA 高級編程[M].徐金梧,徐 科,呂志民,譯.北京:清華大學出版社,2000.
[5]成玉榮,王聰麗.基于TAO的CORBA應用軟件設計[J].無線電工程,2010,4(11):13-15.
[6] TMF814Av2.1 TM FORUM MTNM.Implementation Statement(IS)Template and Guidelines[S],2002.