摘要:該文設(shè)計(jì)一種基于AdventNet框架的管理系統(tǒng)的設(shè)計(jì)的方法。該系統(tǒng)利用AdventNetAPI類庫(kù)開發(fā)網(wǎng)絡(luò)管理系統(tǒng)底層應(yīng)用;采用基于MVC模式的ADVENTNET框架來(lái)實(shí)現(xiàn)用戶界面表示、應(yīng)用業(yè)務(wù)邏輯和數(shù)據(jù)訪問邏輯的分離。應(yīng)用在這個(gè)系統(tǒng)的ADVENTNET框架將在整個(gè)發(fā)展過程中為開發(fā)者帶來(lái)更高工作效率。
關(guān)鍵詞:AdventNet;MVC模式;管理系統(tǒng)
中圖分類號(hào):TP311文獻(xiàn)標(biāo)識(shí)碼:A文章編號(hào):1009-3044(2009)32-8950-02
基于ADVENTNET框架的網(wǎng)絡(luò)管理(WBN)模式融合了Web技術(shù)、Java技術(shù)和網(wǎng)絡(luò)管理技術(shù),允許管理人員以訪問WWW的方式來(lái)管理網(wǎng)絡(luò)。管理人員只要使用Web瀏覽器便可以在任何地點(diǎn)、任何的網(wǎng)絡(luò)平臺(tái)上監(jiān)視和管理網(wǎng)絡(luò)系統(tǒng)。隨著技術(shù)的不斷發(fā)展,網(wǎng)管技術(shù)向更Web化、分布化、集成化、層次化和智能化的方向發(fā)展。這要求系統(tǒng)具有良好的可擴(kuò)展性和多層次結(jié)構(gòu)設(shè)計(jì),能夠利用多種協(xié)議和接口在異構(gòu)系統(tǒng)和設(shè)備上采集數(shù)據(jù),對(duì)數(shù)據(jù)能夠進(jìn)行分布式處理。系統(tǒng)能夠提供性能、故障、配置和拓?fù)涞裙δ苣K彼此之間的松耦合。J2EE是一種基于Java 2的企業(yè)級(jí)解決方案,是為開發(fā)、部署和管理復(fù)雜企業(yè)級(jí)應(yīng)用建立的體系結(jié)構(gòu)。ADVENTNET技術(shù)是Sun公司倡導(dǎo)的對(duì)J2EE的Web層進(jìn)行MVC擴(kuò)展的最新技術(shù),實(shí)現(xiàn)顯示邏輯、應(yīng)用業(yè)務(wù)邏輯和數(shù)據(jù)訪問邏輯分開,實(shí)現(xiàn)了系統(tǒng)的松耦合,增強(qiáng)了系統(tǒng)的可擴(kuò)展性和健壯性,為開發(fā)網(wǎng)絡(luò)管理系統(tǒng)提供了良好的組織框架。
AdventNetAPI為基于的網(wǎng)絡(luò)管理應(yīng)用提供了一個(gè)全面的開發(fā)工具包。AdventNet 包中包含一系列強(qiáng)大的Java庫(kù),用來(lái)為監(jiān)視和跟蹤網(wǎng)絡(luò)元素創(chuàng)建實(shí)時(shí)的應(yīng)用程序,這些應(yīng)用程序不僅是可靠的、可伸展的而且是獨(dú)立于操作系統(tǒng)的[2]。開發(fā)人員可以利用AdventNet的庫(kù)來(lái)創(chuàng)建獨(dú)立的、基于Java和Web的分布式(EJB、CORBA、或RMI的網(wǎng)絡(luò)管理程序。AdventNet庫(kù)提供基本的操作如GET、GETNEXT、GETBULK和SET,為陷阱和表格處理提供相應(yīng)組建。利用AdventNet 開發(fā)管理應(yīng)用程序不僅可以接收陷阱,還可以利用預(yù)定義的規(guī)則處理這些陷阱,實(shí)現(xiàn)有效的網(wǎng)絡(luò)管理。
1 ADVENTNET框架概述
1.1 MVC設(shè)計(jì)模式
MVC(model-view-control)綜合使用JSP、JavaBean(EJB)和Servlet技術(shù)。Servlet接收HTML表單傳送來(lái)的HttpRequest請(qǐng)求事件Event。根據(jù)相應(yīng)的Event調(diào)用業(yè)務(wù)邏輯方法,處理業(yè)務(wù)。Model層的Javabean/EJB通過Jdbc進(jìn)行數(shù)據(jù)庫(kù)操作,并將數(shù)據(jù)保存在Javabean中。Servlet取得對(duì)數(shù)據(jù)存放的JavaBean的引用之后,傳送給JSP。JSP根據(jù)數(shù)生成HTML頁(yè)面,在瀏覽器端顯示[3]。
1.2 ADVENTNET框架
ADVENTNET作為Java社區(qū)倡導(dǎo)的新的Web開發(fā)框架,類似于JavaBeans在Swing中的架構(gòu),ADVENTNET中的組件也具有狀態(tài)和行為這些是通過組件的屬性設(shè)置來(lái)實(shí)現(xiàn)的,ADVENTNET又通過這些組件來(lái)構(gòu)建Web頁(yè)面。ADVENTNET中的UI組件具有統(tǒng)一的呈現(xiàn)配置,對(duì)于相同的組件可以有不同的呈現(xiàn)方式,其功能與外觀實(shí)現(xiàn)了分離,對(duì)開發(fā)者來(lái)講相同的開發(fā)可以實(shí)現(xiàn)不同的應(yīng)用。ADVENTNET框架更加明確地體現(xiàn)MVC模式,相比Struts等其它MVC框架來(lái)說(shuō)各個(gè)層次的界限更加明顯,應(yīng)用更加容易。ADVENTNET是基于組件的框架,它提供了標(biāo)準(zhǔn)HTML中的所有輸入域的標(biāo)記,而且也可定義自己想要的組件或者組合已有的HTML組件來(lái)實(shí)現(xiàn)組合功能。ADVENTNET組件是有狀態(tài)的,這種狀態(tài)是通過ADVENTNET框架實(shí)現(xiàn)的,ADVENTNET通過組件來(lái)產(chǎn)生HTML響應(yīng),它是事件驅(qū)動(dòng)型MVC框架。ADVENTNET中的每一個(gè)UI組件屬性都有相應(yīng)的受控JavaBeans與其綁定,這些屬性的設(shè)置是由后臺(tái)JavaBean中一組SET和GET來(lái)設(shè)定的。還有一種設(shè)定就是相應(yīng)組件的行為的設(shè)定,在ADVENTNET中通過設(shè)定相應(yīng)組件的action屬性來(lái)實(shí)現(xiàn),當(dāng)然也可以為組件設(shè)定事件監(jiān)聽,以響應(yīng)事件來(lái)改變組件的行為和呈現(xiàn)。圖1是ADVENTNET的MVC運(yùn)作機(jī)理圖[1]。
2 系統(tǒng)分析與設(shè)計(jì)
從某種意義上說(shuō),網(wǎng)絡(luò)管理是一種以數(shù)據(jù)操作和處理為基礎(chǔ)的管理信息系統(tǒng),對(duì)被管對(duì)象的狀態(tài)監(jiān)視和性能統(tǒng)計(jì)分析等都依賴于大量的數(shù)據(jù),而對(duì)被管對(duì)象的控制也是一種數(shù)據(jù)操作。在所設(shè)計(jì)的網(wǎng)絡(luò)管理系統(tǒng)中實(shí)時(shí)數(shù)據(jù)的獲取通過底層的數(shù)據(jù)采集模塊來(lái)實(shí)現(xiàn)。數(shù)據(jù)采集模塊通過協(xié)議與代理交換交互獲得被管設(shè)備MIB信息,或通過與其他網(wǎng)絡(luò)管理系統(tǒng)的通信獲得相關(guān)的網(wǎng)絡(luò)數(shù)據(jù)。收集到的各種數(shù)據(jù)經(jīng)過分析和處理之后得到的性能參數(shù)、告警和拓?fù)湟愿鞣N可視化的圖表在客戶端顯示出來(lái)[5]。經(jīng)過以上的分析,基于Web的網(wǎng)絡(luò)管理系統(tǒng)的體系結(jié)構(gòu):使用AdventNetAPI實(shí)現(xiàn)底層數(shù)據(jù)采集;利用ADVENTNET框架將業(yè)務(wù)處理主要是對(duì)管理員操作和數(shù)據(jù)處理和用戶端的顯示邏輯分離。
2.1 管理系統(tǒng)實(shí)現(xiàn)的主要功能
輪詢模塊:周期性的輪詢被管設(shè)備的MIB數(shù)據(jù),并把采集到的數(shù)據(jù)根據(jù)一定的策略存入數(shù)據(jù)庫(kù),以便進(jìn)一步的處理。配置管理模塊:根據(jù)數(shù)據(jù)庫(kù)中存儲(chǔ)的對(duì)象和數(shù)據(jù)構(gòu)造網(wǎng)絡(luò)拓?fù)鋱D。顯示被管對(duì)象的MIB數(shù)據(jù),并可以對(duì)MIB數(shù)據(jù)進(jìn)行設(shè)置。告警處理模塊:從數(shù)據(jù)庫(kù)中讀取管理對(duì)象狀態(tài)信息,接收管理對(duì)象發(fā)送的告警信息,以一定的方式通知給管理員,并將告警時(shí)間存儲(chǔ)到數(shù)據(jù)庫(kù)中的日志文件中。用戶管理模塊:實(shí)現(xiàn)對(duì)管理權(quán)限的認(rèn)證。只有通過身份鑒別和權(quán)限認(rèn)證的用戶才能進(jìn)行相應(yīng)管理權(quán)限之內(nèi)的任務(wù)。日志處理模塊:采用Apache的Log4J實(shí)現(xiàn)。將各種管理事件的日志信息在管理端顯示,并存入數(shù)據(jù)庫(kù)。
2.2 數(shù)據(jù)采集層設(shè)計(jì)
利用AdventNetAPI中的SN-MPGet(),GetNext(),Walk()和TABLE類實(shí)現(xiàn)數(shù)據(jù)的采集和獲取。利用NMPPoller實(shí)現(xiàn)輪詢數(shù)據(jù)的獲取。利用TrapReceiver類接受Trap,利用TrapResult類實(shí)現(xiàn)對(duì)Trap處理。AdventNet 開包的SAS( AppletServer)API支持Java Applet避開瀏覽器對(duì)的安全限制。SAS允許Applet發(fā)送任何數(shù)據(jù)到任何被管設(shè)備以及從Applet主機(jī)接收任何數(shù)據(jù)包。在服務(wù)器上運(yùn)行SAS,客戶端的Applet就可以通過SAS和被管設(shè)備實(shí)時(shí)交互。網(wǎng)絡(luò)管理人員就可以通過Get()和Set()查詢和配置被管設(shè)備,同時(shí)還可以接受被管設(shè)備的代理的TRAP報(bào)文。
2.3 基于ADVENTNET框架的系統(tǒng)主體設(shè)計(jì)
在管理層,Controller負(fù)責(zé)處理用戶請(qǐng)求;網(wǎng)絡(luò)管理的各個(gè)功能模塊以Model組件的形式實(shí)現(xiàn);處理結(jié)果由View在瀏覽器上顯示。
2.3.1 Controller(控制層)實(shí)現(xiàn)
Contorller組件的實(shí)現(xiàn)在ADVENTNET中通過Faces Servlet匯集客戶端的請(qǐng)求,以及響應(yīng)客戶端的請(qǐng)求。表現(xiàn)為上層的Controller Servlet、配置文件以及一系列的Action處理。其中,Action處理程序是Controller中的一個(gè)方法,這個(gè)方法要求沒有參數(shù)、返回一個(gè)字符串,而且是Public的。Action處理結(jié)果的響應(yīng)取決于它返回的結(jié)果,ADVENTNET允許設(shè)置配置文件來(lái)根據(jù)返回結(jié)果決定作業(yè)流向,這就是ADVENTNET的導(dǎo)航機(jī)制。配置文件導(dǎo)航示例如圖2所示。這是利用Myeclipse所帶的AdventNet-config.xml設(shè)計(jì)器繪制的導(dǎo)航規(guī)則圖,這種簡(jiǎn)單明了的設(shè)計(jì)使得開發(fā)者可以減少很多勞動(dòng)量。
2.3.2 Mode(l模型層)實(shí)現(xiàn)
在使用ADVENTNET建立應(yīng)用系統(tǒng)時(shí),會(huì)有兩種不同的M構(gòu)應(yīng)用。一種是組件Model,同用戶界面組件關(guān)聯(lián),用來(lái)管者的狀態(tài),組件Model對(duì)象通常通過ADVENTNET的值綁定策略同關(guān)聯(lián);第二種是應(yīng)用Model,同服務(wù)器端的應(yīng)用級(jí)Model關(guān)用來(lái)表示業(yè)務(wù)數(shù)據(jù)。應(yīng)用Model還可以選擇結(jié)合數(shù)據(jù)持久數(shù)據(jù)封裝技術(shù),如Hibernate技術(shù),實(shí)現(xiàn)對(duì)數(shù)據(jù)的對(duì)象化操M(fèi)層包括了應(yīng)用的業(yè)務(wù)對(duì)象所描述的應(yīng)用模型,表現(xiàn)為的JavaBeans,是一系列屬性和對(duì)應(yīng)他們的GET,SET方法合。下面是一個(gè)M層的示例:
public class ProjectM{
private String proname;
public void setProname()
{this.proname=proname;}
public String getProname()
{return proname;}}
在業(yè)務(wù)邏輯實(shí)現(xiàn)過程中,每一個(gè)工程都是這個(gè)Model類的實(shí)例。其中proname是工程名,在頁(yè)面設(shè)計(jì)中#{newprojectpage. project.proname}即引用自這個(gè)類,project是在newprojectpage對(duì)應(yīng)的類中生成的projectM實(shí)例。
2.3.3 View(界面)實(shí)現(xiàn)
使用ADVENTNET提供的tag,設(shè)計(jì)出符合需求的界面。ADVENTNET標(biāo)記庫(kù)包含兩個(gè)庫(kù)。1)核心庫(kù),包括配置組件、管理事件偵聽器驗(yàn)證用戶輸入和其它功能的標(biāo)記,核心標(biāo)記庫(kù)聲明使用f作為前綴。2)標(biāo)記庫(kù),負(fù)責(zé)將組件呈現(xiàn)為的樣式,通過這些庫(kù)可實(shí)現(xiàn)對(duì)組件樹的控制,聲明采用h作為前綴。以新增項(xiàng)目頁(yè)面的實(shí)現(xiàn)為例介紹ADVENTNET標(biāo)記構(gòu)建頁(yè)面的過程。首先,引入兩個(gè)標(biāo)記庫(kù):<%@taglib prefix=\"f\"Uri=\"http://java.sun.com/AdventNet/core\"%>聲明ADVENTNET核心標(biāo)記庫(kù)。<%@taglib prefix=\"h\"Uri=\"http://java.sun.com/AdventNet/html\"%>聲明HTML標(biāo)記庫(kù)。下面是具體的頁(yè)面設(shè)計(jì)代碼介紹:
首先,頁(yè)面具有和靜態(tài)HTML頁(yè)面相同的部分。
不同的部分就是在引入兩個(gè)標(biāo)記庫(kù)之后在靜態(tài)頁(yè)面中嵌入了ADVENTNET特有的組件架構(gòu):,每一個(gè)ADVENTNET頁(yè)面都包含有一個(gè)標(biāo)記對(duì),它是一個(gè)核心標(biāo)記,在其中加入各種ADVENTNET組件就形成了ADVENTNET組件樹,各種組件根據(jù)它們?cè)陧?yè)面中的相對(duì)位置,建立起樹關(guān)系;標(biāo)記對(duì)標(biāo)志form組件,它作為根組件出現(xiàn)在頁(yè)面代碼中,form組件中可以組合各種頁(yè)面需要的組件,輸入框、按鈕、下拉列表等,它們組成表單的組件列表。ADVENTNET提供了豐富的組件,而且這一切還在發(fā)展之中,為應(yīng)用提供了便利,可使編程人員極大的提高工作效率。
其中標(biāo)記在頁(yè)面中呈現(xiàn)為一個(gè)文本輸入框,#{newprojectpage.project.proname}為應(yīng)用Model部分,是文本框?qū)?yīng)屬性值“新建工程名稱”,通過配置文件faces-config.xml與指定的后臺(tái)bean對(duì)應(yīng)的屬性關(guān)聯(lián),在
3 結(jié)束語(yǔ)
使用ADVENTNET框架和AdventNet提供的開發(fā)包,使得本項(xiàng)目的設(shè)計(jì)和開發(fā)省去許多在其它框架下的繁瑣過程,并且能讓開發(fā)人員可以有更多的精力致力于網(wǎng)絡(luò)管理功能和頁(yè)面布局的開發(fā)和設(shè)計(jì),給整個(gè)開發(fā)過程帶來(lái)了高的工作效率和質(zhì)量保證。
參考文獻(xiàn):
[1] Sun Microsystems Inc.Java 2 Platform Enterprise Editio Specification ,Version 5[S/OL].http://java.sun.com/javaee.
[2] 郭軍.網(wǎng)絡(luò)管理[M].2版.北京:北京郵電大學(xué)出版社,2005.
[3] 張滬寅.計(jì)算機(jī)網(wǎng)絡(luò)管理實(shí)用教程[M].武漢:武漢大學(xué)出版社,2005,8.
[4] 劉克科.Java Server Faces編程[M].北京:清華大學(xué)出版社,2005.
[5] 周錦玉,洪沙,鮑偉.基于的網(wǎng)絡(luò)性能管理系統(tǒng)研究與實(shí)現(xiàn)[J].微處理機(jī),2007(12).