李興春
(1.重慶文理學(xué)院 教務(wù)處,重慶 永川 402160;2.重慶大學(xué) 計(jì)算機(jī)學(xué)院,重慶 沙坪壩 400030)
網(wǎng)絡(luò)管理工具已經(jīng)變成了近來網(wǎng)絡(luò)以及系統(tǒng)管理者必備的工具.在Web-Based的網(wǎng)絡(luò)管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)上[1-2],Java程序語言扮演著一個(gè)十分重要的角色.Java是個(gè)平臺(tái)中立的程序語言,在任何支持Java虛擬機(jī)器的平臺(tái)都能執(zhí)行,具有高度的可移植性.Java能讓瀏覽器可以執(zhí)行網(wǎng)絡(luò)管理的應(yīng)用程序,對(duì)于實(shí)現(xiàn) Web-Based的網(wǎng)絡(luò)管理系統(tǒng)而言,是一個(gè)強(qiáng)而有力的技術(shù)[3-5].因此,目前設(shè)計(jì) Web-Based網(wǎng)絡(luò)管理系統(tǒng)的主流趨勢(shì)便是以 Java作為系統(tǒng)組成的核心.
本文目的在于發(fā)展一套針對(duì) Web-Based網(wǎng)絡(luò)管理系統(tǒng)需要的 Java高級(jí)類別函數(shù)庫(Class Library).在這套類別函數(shù)庫(Class Library)中,將包含多種網(wǎng)絡(luò)管理的高級(jí)功能,比如:網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)的搜尋(Network Topology Discovery)、網(wǎng)絡(luò)效能的監(jiān)測(cè)(Network Performance Monitor),等等.另一方面,網(wǎng)絡(luò)管理系統(tǒng)的程序設(shè)計(jì)者也不必花費(fèi)許多的心力開發(fā)這些網(wǎng)絡(luò)管理功能的程序,而可以直接地利用這套類別函數(shù)庫(Class Library)中所發(fā)展出來的各式高級(jí)網(wǎng)絡(luò)管理類別,可以更專注于系統(tǒng)的整合與使用者接口的設(shè)計(jì).換句話說,這套類別函數(shù)庫希望提供許多網(wǎng)絡(luò)管理的程序組件,使用架構(gòu)于這套類別函數(shù)庫(Class Library)的程序設(shè)計(jì)者可以藉由組裝這些程序組件,而簡(jiǎn)化網(wǎng)絡(luò)管理系統(tǒng)的設(shè)計(jì)工作.
在所設(shè)計(jì)與實(shí)現(xiàn)的類別中,包含幾個(gè)部分,分別是:高級(jí)網(wǎng)絡(luò)管理信息類別、高級(jí)網(wǎng)絡(luò)管理信息擷取類別、網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)管理類別、網(wǎng)絡(luò)效能監(jiān)測(cè)類別以及網(wǎng)絡(luò)管理檔案存取類別.其中高級(jí)網(wǎng)絡(luò)管理信息類別是最為基礎(chǔ)的一個(gè)部份,因此也是我們首先加以設(shè)計(jì)以及實(shí)現(xiàn)的一個(gè)部分.
這一類的高級(jí)類別,其目的在于包裝各類的管理信息(Management Information).傳統(tǒng)上,我們以MIB(ManagementInformation Base)來定義各類的管理信息[6],然而 MIB的定義方式對(duì)于開發(fā)網(wǎng)絡(luò)管理系統(tǒng)的程序設(shè)計(jì)者來說,并不便利.而我們則將各種管理信息一一包裝成為 Java程序語言中的類別.這樣一來,將程序設(shè)計(jì)者原本必須直接操縱 OID的設(shè)計(jì)方式,轉(zhuǎn)換成為以 Java類別的方式來思考,更貼近對(duì)象導(dǎo)向設(shè)計(jì)的哲學(xué).每種管理信息,都被轉(zhuǎn)換成為 JavaObject,程序設(shè)計(jì)者可以更容易地以對(duì)象導(dǎo)向的概念來操控這些管理信息.在MIB I(IManagement Information BaseII)中包括了數(shù)個(gè) Group:System、Interface、IP、TCP、UDP、SNMP、ICMP,等等.
和高級(jí)網(wǎng)絡(luò)管理信息類別息息相關(guān)的便是高級(jí)網(wǎng)絡(luò)管理信息擷取類別.高級(jí)網(wǎng)絡(luò)管理信息類別的目的在于封包、整理網(wǎng)絡(luò)管理相關(guān)的類別并且將其轉(zhuǎn)化成為 Java類別的形式.而高級(jí)網(wǎng)絡(luò)管理信息擷取類別則實(shí)現(xiàn)了擷取這些網(wǎng)絡(luò)管理信息的部分.這一類的類別,隱藏了以網(wǎng)絡(luò)管理通訊協(xié)議去取得相關(guān)信息的部分,程序設(shè)計(jì)者只需輕易地呼叫相對(duì)應(yīng)的方法(method)即可取得網(wǎng)絡(luò)管理所需的信息.我們?cè)O(shè)計(jì)并實(shí)現(xiàn)了 3個(gè)高級(jí)網(wǎng)絡(luò)管理信息擷取類別分別用來取得 MIB中的 object、column以及 table的值.它們的類別名稱分別是:
MIBObjHunter
MIBColumnHunter
MIBTableHunter
事實(shí)上,當(dāng)高級(jí)網(wǎng)絡(luò)管理信息類別的對(duì)象實(shí)際被建構(gòu)(construct)出來時(shí),即會(huì)透過“高級(jí)網(wǎng)絡(luò)管理信息擷取類別”來取得高級(jí)網(wǎng)絡(luò)管理信息類別所代表的相關(guān)信息.因此,對(duì)于程序設(shè)計(jì)者而言,甚至不需接觸到高級(jí)網(wǎng)絡(luò)管理信息擷取類別,只需將高級(jí)網(wǎng)絡(luò)管理信息類別建構(gòu)出來,再透過高級(jí)網(wǎng)絡(luò)管理信息擷取類別所提供的界面取得信息即可.
我們以實(shí)現(xiàn)的高級(jí)網(wǎng)絡(luò)管理信息類別以及高級(jí)網(wǎng)絡(luò)管理信息擷取類別作為基礎(chǔ),便十分輕易地為我們所開發(fā)的系統(tǒng)融入各種取得網(wǎng)管信息的模塊.利用一個(gè)稱為 InterfaceSummary的類別取得該被管理設(shè)備各個(gè) interface的運(yùn)作狀態(tài),程序設(shè)計(jì)者只需建構(gòu)此類別的對(duì)象,傳入欲取得被管理設(shè)備的 IP地址,類別內(nèi)的建構(gòu)機(jī)制即自動(dòng)地利用 MIBColumnHunter來取得在MIB2中的一個(gè) column,而將被管理設(shè)備各個(gè) interface的運(yùn)作狀態(tài)取回.程序設(shè)計(jì)者只需利用 getSize()來取得該被管理設(shè)備究竟有多少 interafce,以及 getOper Status()來取得指定 interface的狀態(tài).可以說是相當(dāng)?shù)乇憷?可以為程序設(shè)計(jì)者節(jié)省許多寶貴的時(shí)間.
架構(gòu)在高級(jí)網(wǎng)絡(luò)管理信息類別以及高級(jí)網(wǎng)絡(luò)管理信息擷取類別之上,我們?cè)侔l(fā)展了網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)管理類別.這一類的類別,其目的在于依循一套完整自動(dòng)化的網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)搜尋的演算方法,將其設(shè)計(jì)成 Java程序語言中的類別,以對(duì)象導(dǎo)向的方式提供給程序設(shè)計(jì)者使用.這一類的類別包括了兩類:第一類是各種網(wǎng)絡(luò)拓?fù)渲袝?huì)出現(xiàn)的基本元素以及數(shù)據(jù)結(jié)構(gòu).我們以類別的方式加以定義,提供程序設(shè)計(jì)者以抽象高級(jí)的方式來處理這些在拓?fù)浣Y(jié)構(gòu)中會(huì)出現(xiàn)的元素,包括了這些類別:
Ether netAdd ress
Inter face
IpAddress
IpRange
Topology
TopologyLink
TopologyNode
Layer 3Device
Segment
Subnet
另一類則是實(shí)現(xiàn)搜尋網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)算法的類別.這些類別將原本十分復(fù)雜而且繁瑣的網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)搜尋算法包裝起來,成為一個(gè)自動(dòng)化的機(jī)制,程序設(shè)計(jì)者只需呼叫所提供的方法(method),便可以輕易地取得網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)的信息,包括了:
Discover
TopologyDiscover
因此,我們所實(shí)現(xiàn)的網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)管理類別提供了極為實(shí)用,而且?guī)缀跏敲總€(gè)網(wǎng)絡(luò)管理系統(tǒng)都必須提供的重要組件.不僅如此,更以極易使用的方式來加以呈現(xiàn).
網(wǎng)絡(luò)效能監(jiān)測(cè)類別的發(fā)展,則提供了另一個(gè)在一般網(wǎng)絡(luò)管理系統(tǒng)中同樣必備的效能監(jiān)測(cè)功能.我們?cè)谟?jì)劃中所設(shè)計(jì)的網(wǎng)絡(luò)效能監(jiān)測(cè)類別中,主要提供了一個(gè)監(jiān)測(cè)器(Monitor)類別.程序設(shè)計(jì)者只需指定監(jiān)測(cè)參數(shù),并且建構(gòu)監(jiān)測(cè)器對(duì)象,即可由監(jiān)測(cè)器對(duì)象自動(dòng)地進(jìn)行監(jiān)測(cè)的動(dòng)作[7].程序設(shè)計(jì)者在建構(gòu)監(jiān)測(cè)器對(duì)象時(shí),可以同時(shí)指定多個(gè)欲監(jiān)測(cè)網(wǎng)絡(luò)效能信息(傳入欲監(jiān)測(cè)的“高級(jí)網(wǎng)絡(luò)管理信息類別”即可),并且分別指定相對(duì)應(yīng)的監(jiān)測(cè)周期.在監(jiān)測(cè)器對(duì)象被建構(gòu)完成后,分別為每個(gè)監(jiān)測(cè)的標(biāo)的建立監(jiān)測(cè)用的執(zhí)行緒(thread).不同的執(zhí)行緒之間相互獨(dú)立.另外,還設(shè)計(jì)了一個(gè)稱作“監(jiān)測(cè)觀察者(MonitoringObserver)”的界面(interface).使用監(jiān)測(cè)者類別的系統(tǒng),必須另外提供一個(gè)實(shí)現(xiàn)(implement)此界面的類別,并且以 addObserver()這個(gè)方法,使此類別的對(duì)象成為監(jiān)測(cè)者的一個(gè)觀察者.那么當(dāng)各監(jiān)測(cè)用的執(zhí)行者取得網(wǎng)絡(luò)效能信息時(shí),便會(huì)將結(jié)果傳遞交予觀察者.這種設(shè)計(jì)的模式在Java核心的類別庫中也屢見不鮮.透過這種設(shè)計(jì)的模式,可以將接收監(jiān)測(cè)結(jié)果的模塊和實(shí)際監(jiān)測(cè)的模塊確實(shí)分離,避免各模塊之間耦合過強(qiáng).
網(wǎng)絡(luò)管理檔案存取類別可以解決網(wǎng)絡(luò)管理應(yīng)用系統(tǒng)儲(chǔ)存以及加載網(wǎng)管信息的需求.網(wǎng)絡(luò)管理檔案存取類別提供了程序設(shè)計(jì)者將網(wǎng)絡(luò)管理信息儲(chǔ)存在文件案之中的界面,也提供了由檔案中加載的界面.它能協(xié)助程序設(shè)計(jì)者維護(hù)網(wǎng)管信息的永續(xù)性(Persistence).程序設(shè)計(jì)者需要儲(chǔ)存對(duì)象狀態(tài)時(shí),即可將對(duì)象交予此永續(xù)對(duì)象管理者(利用 put()這個(gè)方法),而在下次取出時(shí)(利用get()這個(gè)方法),仍舊可以取得相同狀態(tài)的對(duì)象.此永續(xù)性的維護(hù)乃是利用 Java程序語言的“Object Serialization”的特性,配合我們以檔案系統(tǒng)實(shí)作一個(gè)允許存入檔案的雜湊表(hashtable)來達(dá)成快速地存取以及取出物件的目的.
這類的類別使網(wǎng)絡(luò)管理系統(tǒng)的設(shè)計(jì)者免于費(fèi)心于信息存取的細(xì)節(jié),只需專注于物件的處理即可.
本文設(shè)計(jì)了各種類別協(xié)助程序設(shè)計(jì)者解決所會(huì)遭遇到的復(fù)雜問題.這些類別,可以大幅地縮短網(wǎng)管系統(tǒng)的開發(fā)周期,同時(shí)因?yàn)槲覀冏裱瓕?duì)象導(dǎo)向的設(shè)計(jì)典范,因此更可使程序本身易于維護(hù).
[1]Y Yemini.The OSI network management model[J].IEEECommunication Magazine,1993,31(5):20-29.
[2]Anonymous.ISO 9596/CCITT X 711[C].Common Management Information Protocol-CMIP,1991:32-26.
[3]Case JD,Fedor M S,Schoffstall M L,et al.Simp le network management protocol[M].RFC 1157,1990:32-29.
[4]T Berners-Lee.World-wide web:the Information universe[J].Elect.Networking,1992,1(1):13-16.
[5]James W-K Hong,J-Y Kong,T-H Yun,et al.Web-based intranet services and network management[J].IEEE Communications Magazine,1997,35:100-110.
[6]Muller N J.Web-accessible network management tools[J].International Journal of Network Management,1997,2:288-297.
[7]Arnold K,Gosling J.The Java programming language[C].Addison-Wesley,1996:32-36.