摘 要:MVC模式具有組件的模塊化,靈活性和重用性的特點(diǎn)。首先介紹了MVC模式的原理和結(jié)構(gòu),然后介紹了電信網(wǎng)管系統(tǒng)查詢模塊的功能及工作流程,最后通過實(shí)例,介紹了MVC模式在開發(fā)本模塊中的應(yīng)用。由于MVC模式的采用,不僅使電信網(wǎng)管系統(tǒng)可靈活地增加新設(shè)備,而且可縮短開發(fā)周期,提高效率。
關(guān)鍵詞:MVC模式;查詢模塊;電信網(wǎng)管系統(tǒng);工作流程
中圖分類號(hào):TP311文獻(xiàn)標(biāo)識(shí)碼:B文章編號(hào):1004373X(2008)1913703
Design of Inquiry on Telecommunication Network Management System Based on MVC
JU Chunfei
(Xijing University,Xi′an,710123,China)
Abstract:The MVC pattern has characteristics of the modulation,the flexibility and the reusability.First,this paper introduces the MVC pattern principle and the structure.Then,the inquiry module of telecommunication network management system is presented.Finally,an example is given to explain the application of MVC pattern in the module developing.Because of adoptingof MVC pattern,the system can add new devices flexibly.Also,it can shorten the development period,and advance the efficiency.
Keywords:MVC pattern;inquiry module;telecommunication network management system;work flow
隨著現(xiàn)代通信技術(shù)的不斷發(fā)展,各種不同型號(hào)的交換設(shè)備層出不窮。為了便于電信運(yùn)營(yíng)商對(duì)不同電信設(shè)備制造商生產(chǎn)的不同交換設(shè)備進(jìn)行統(tǒng)一的管理和維護(hù),人們要求在電信網(wǎng)管系統(tǒng)中能夠查詢出系統(tǒng)中接入的所有設(shè)備的所需參數(shù),此外還能快速靈活地增加新的設(shè)備,為此采用了MVC模式作為電信網(wǎng)管系統(tǒng)查詢模塊的設(shè)計(jì)框架,這不僅可以滿足以上對(duì)電信網(wǎng)管的要求,同時(shí)還可以起到提高代碼的可重用性和簡(jiǎn)化系統(tǒng)設(shè)計(jì)的目的。
1 MVC模式
MVC(Model-View-Controller,模型-視圖-控制器)模式最初是由Trygve Reenskaug在20世紀(jì)70年代提出,首先被應(yīng)用在SmallTalk-80環(huán)境中,是許多交互式界面系統(tǒng)的構(gòu)成基礎(chǔ)。MVC模式至今已被廣泛使用,并被推薦為Sun公司J2EE平臺(tái)的設(shè)計(jì)模式,是開發(fā)交互式應(yīng)用系統(tǒng)的一個(gè)成熟的設(shè)計(jì)模式[1]。
MVC模式主要由3個(gè)部分組成:模型、視圖和控制器,其結(jié)構(gòu)如圖1所示。
模型包含了應(yīng)用問題的核心數(shù)據(jù)、邏輯關(guān)系和計(jì)算功能,它封裝了所需的數(shù)據(jù),提供了完成問題處理的操作過程。模型能為多個(gè)視圖提供數(shù)據(jù)。這種變化-傳播機(jī)制體現(xiàn)在各個(gè)相互依賴部件之間的注冊(cè)關(guān)系上。模型數(shù)據(jù)和狀態(tài)的變化會(huì)激發(fā)這種變化-傳播機(jī)制,它是模型、視圖和控制器之間聯(lián)系的紐帶。由于應(yīng)用于模型的代碼只需寫一次就可以被多個(gè)視圖重用,所以減少了代碼的重復(fù)性。
視圖通過在屏幕上的顯示形式,把信息轉(zhuǎn)達(dá)給用戶。不同視圖通過不同的顯示,來表達(dá)模型的數(shù)據(jù)和狀態(tài)信息。每個(gè)視圖有一個(gè)更新操作,它可以被變化-傳播機(jī)制所激活。當(dāng)調(diào)用更新操作時(shí),視圖獲得來自模型的數(shù)據(jù)值,并用它們來更新顯示。在初始化時(shí),通過與變化-傳播機(jī)制的注冊(cè)關(guān)系建立起所有視圖與模型間的關(guān)聯(lián)。視圖提供給控制器處理顯示的操作。控制器可以獲得主動(dòng)激發(fā)界面更新的能力。
控制器用于管理用戶與視圖發(fā)生的交互。一旦用戶想對(duì)模型進(jìn)行處理時(shí),它不能直接去執(zhí)行模型,而是通過控制器來間接地實(shí)現(xiàn)??刂破髂軓囊晥D中取值,然后將相應(yīng)的值傳給模型進(jìn)行處理。控制器接受用戶的輸入并調(diào)用模型和視圖去完成用戶的需求。
由上述可知,MVC模式的處理過程是:首先由控制器接收用戶的請(qǐng)求,并決定應(yīng)該調(diào)用哪個(gè)模型來進(jìn)行處理,然后模型用業(yè)務(wù)邏輯來處理用戶的請(qǐng)求并返回?cái)?shù)據(jù),最后控制器用相應(yīng)的視圖返回?cái)?shù)據(jù),并通過表達(dá)層呈現(xiàn)給用戶。
2 電信網(wǎng)管查詢模塊的設(shè)計(jì)
2.1 需求分析
分析電信網(wǎng)管系統(tǒng)的任務(wù)需求,根據(jù)所處理的數(shù)據(jù)類型不同可將查詢模塊分為日志查詢、告警查詢和設(shè)備性能查詢?nèi)齻€(gè)子模塊。其中日志查詢子模塊是查詢某個(gè)設(shè)備、指定交換局下,符合某些條件的日志記錄,不同類型的設(shè)備的日志記錄項(xiàng)是相同的,故日志查詢子模塊可共用一個(gè)查詢選擇界面;告警查詢部分是對(duì)某設(shè)備上報(bào)的告警進(jìn)行查詢(可以按告警局名、告警輸出時(shí)間、告警號(hào)、告警類型、告警級(jí)別進(jìn)行查詢),不同類型的設(shè)備上報(bào)的告警記錄項(xiàng)是類似的,故告警查詢子模塊的查詢選擇界面大體相似,只有部分組件稍有改變;因不同設(shè)備的性能參數(shù)不同,所以設(shè)備性能查詢子模塊需要根據(jù)接入的設(shè)備類型將查詢選擇界面分解為針對(duì)不同設(shè)備的選擇界面。
每個(gè)查詢子模塊的實(shí)現(xiàn)過程是一致的,先初始化,提供可使用戶選擇的查詢界面,用戶選擇好查詢條件后,點(diǎn)擊查詢按鈕,將用戶選擇的查詢條件生成進(jìn)行數(shù)據(jù)庫(kù)操作的SQL語句,并將操作結(jié)果緩存,根據(jù)用戶的選擇以報(bào)表的形式呈現(xiàn),點(diǎn)擊重置按鈕,將查詢界面恢復(fù)初始化狀態(tài)。
經(jīng)過以上的分析,得出電信網(wǎng)管系統(tǒng)的查詢模塊可提供具有統(tǒng)一風(fēng)格的界面來查詢不同設(shè)備和不同類型的數(shù)據(jù)。比如需要查詢SP30IEX,SP30CN和AN等交換設(shè)備的日志、告警及性能。由于所有的查詢過程都需要有供用戶選擇查詢條件的界面、顯示操作結(jié)果的界面以及對(duì)選擇數(shù)據(jù)的處理部分,并且對(duì)應(yīng)不同的條件選擇,系統(tǒng)應(yīng)有相應(yīng)的結(jié)果顯示。也就是在保持交互操作界面的相對(duì)穩(wěn)定的情況下,能根據(jù)用戶的查詢需要改變和調(diào)整顯示的內(nèi)容。
2.2 總體設(shè)計(jì)
在需求分析的基礎(chǔ)上,我們得出雖然不同設(shè)備的查詢模塊所進(jìn)行查詢的性能參數(shù)有所不同,但是它們的操作處理流程是基本一致的,查詢的選擇界面和查詢結(jié)果的顯示界面也大體相同,符合MVC模式的特點(diǎn)。以MVC模式為設(shè)計(jì)框架,不僅可以實(shí)現(xiàn)系統(tǒng)的擴(kuò)展性,而且提高了代碼的復(fù)用性[1]。
以MVC模式為設(shè)計(jì)框架,我們可以把統(tǒng)計(jì)模塊抽象為以下三個(gè)獨(dú)立的部分,其中模型是進(jìn)行選擇查詢條件的界面、根據(jù)用戶選擇生成進(jìn)行數(shù)據(jù)庫(kù)操作的SQL語句及按定制模式顯示操作結(jié)果所需參數(shù)的部分;控制器是對(duì)整個(gè)查詢執(zhí)行的控制部分;視圖是查詢結(jié)果的顯示部分。
用戶選擇查詢條件,按查詢按鈕后,Model將用戶選擇的條件生成用于數(shù)據(jù)庫(kù)操作的SQL語句和用于顯示查詢報(bào)表的參數(shù),把這些信息傳遞給Controller,Controller調(diào)用CommonDataBase類進(jìn)行數(shù)據(jù)庫(kù)操作,將操作結(jié)果緩存在StatDataObject類的數(shù)組中,View從StatDataObject的對(duì)象中取得要顯示的結(jié)果,調(diào)用相應(yīng)的模塊,將查詢結(jié)果以用戶需要的形式呈現(xiàn)給用戶。
2.3 查詢模塊的處理流程
查詢模塊中的所有查詢子模塊的處理過程,都需要得到用戶的選擇條件,在判斷的基礎(chǔ)上,進(jìn)行數(shù)據(jù)庫(kù)操作,并將操作結(jié)果以一定的形式進(jìn)行顯示。由此我們?cè)O(shè)計(jì)圖2所示的處理流程,它是查詢模塊中任何子模塊處理過程遵循的依據(jù)。
從圖2中可以看到,用戶最開始進(jìn)入的是查詢模塊的初始界面,用戶選擇查詢的條件后,按查詢按鈕,接著驗(yàn)證輸入條件是否符合要求,如果不符合條件則給出出錯(cuò)提示,讓用戶重新選擇;如果符合條件則將查詢條件生成相應(yīng)的SQL語句和相關(guān)的制表數(shù)據(jù),提交SQL語句數(shù)組給數(shù)據(jù)庫(kù)進(jìn)行查詢操作,然后將查詢結(jié)果和剛才得到的相關(guān)數(shù)據(jù)進(jìn)行緩存,最后根據(jù)用戶的選擇,調(diào)用相關(guān)的類和方法進(jìn)行查詢報(bào)表的顯示。用戶如果選擇重置按鈕,則將選擇界面還原成用戶沒有進(jìn)行條件選擇的初始界面。MVC模式的選用,不僅提高了模塊的可維護(hù)性(可以根據(jù)用戶的要求改變查詢結(jié)果的顯示形式,而不影響其他模塊的性能);而且還可以很容易地加入新的設(shè)備(只需改變模型),提高了系統(tǒng)的可擴(kuò)展性。
2.4 查詢模塊的實(shí)現(xiàn)
根據(jù)以上分析,主要設(shè)計(jì)以下幾個(gè)主類來實(shí)現(xiàn)查詢模塊:
StatConditionPnl:一個(gè)基類,具有查詢模塊選擇界面的公有方法和功能,比如得到用戶選擇的查詢條件、得到要繪制顯示報(bào)表的參數(shù)等。
LogStatPnl:它是日志選擇界面類,它繼承了StatConditionPnl類,提供用戶進(jìn)行日志查詢的選擇。
AlarmStat:是告警查詢的選擇界面類,同LogStatPnl類似,它繼承了StatConditionPnl類,不同的是它根據(jù)用戶選擇設(shè)備類型的不同,又加載了anAlarm類、iexAlarm類或其他設(shè)備告警類的對(duì)象,讓用戶進(jìn)一步選擇。
StatPnl:是查詢模塊中的一個(gè)關(guān)鍵類,它在左邊界面上加載了查詢選擇面板,右邊加載查詢結(jié)果顯示面板,在這個(gè)類中我們得到查詢的選擇條件,并和數(shù)據(jù)庫(kù)建立連接,進(jìn)行查詢操作。從用戶的選擇條件中得到繪制查詢報(bào)表的參數(shù),加上查詢的結(jié)果以某種形式緩存在內(nèi)存中。
CommonDataBase:是進(jìn)行數(shù)據(jù)庫(kù)操作的類,實(shí)現(xiàn)了和數(shù)據(jù)庫(kù)的連接并執(zhí)行了SQL語句的操作。
SqlClass:是組合SQL語句的類。
StatConditionObject:是一個(gè)用來裝載從查詢面板得到查詢條件的類。
StatDataObject:是用來裝查詢結(jié)果和繪制查詢報(bào)表參數(shù)的類。
StatTableData:是用來裝從查詢面板得到繪制查詢報(bào)表參數(shù)的類。
ViewPnl:將StatTableData類裝載的數(shù)據(jù)轉(zhuǎn)化為是產(chǎn)生查詢報(bào)表所需的數(shù)據(jù),然后調(diào)用MyTablePnl類的方法進(jìn)行查詢報(bào)表的顯示。
MyTable:將查詢數(shù)據(jù)裝載在MyTablePnl類定制的查詢報(bào)表中。
MyTablePnl:定制了查詢報(bào)表的顯示格式的面板,設(shè)置了查詢報(bào)表的題頭等模式。
3 結(jié) 語
本文首先介紹了MVC模式,然后以MVC為框架,設(shè)計(jì)和實(shí)現(xiàn)電信網(wǎng)管系統(tǒng)的查詢模塊。MVC模式的使用,不僅使網(wǎng)管系統(tǒng)的業(yè)務(wù)邏輯組件化,可以很容易地實(shí)現(xiàn)對(duì)電信網(wǎng)管中新加入設(shè)備的日志、告警和性能進(jìn)行查詢,另一方面還簡(jiǎn)化了系統(tǒng)的設(shè)計(jì),提高了代碼的重用性。
參考文獻(xiàn)
[1][美]Erich Gamma.設(shè)計(jì)模式[M].北京:機(jī)械工業(yè)出版社,2000.
[2]Poetier P J.數(shù)據(jù)庫(kù)技術(shù)大全[M].北京:電子工業(yè)出版社,1999.
[3]王雄英,韓衛(wèi)占.通信網(wǎng)管理技術(shù)[M].北京:國(guó)防工業(yè)出版社,2003.
[4]巨春飛.基于電信網(wǎng)管系統(tǒng)中查詢的研究[J].現(xiàn)代電子技術(shù),2008,31(1):137-139,146.
[5]大唐電信有限公司.SP30數(shù)字程控交換系統(tǒng)[M].北京:人民郵電出版社,1997.
[6]智少游, 李振邦,陳錫銘,等.現(xiàn)代網(wǎng)絡(luò)管理[M].成都:電子科技大學(xué)出版社,1996.
[7]齊治昌,譚慶平,寧洪.軟件工程[M]. 北京:高等教育出版社,1997.
[8]Dan Harkey R O.Client/Server programming With JAVA and CORBA[M].USA:Wiltely Computer Publishing,1997.
[9]Graefe G.The Cascades Framework for Query Optimization[C].In:IEEE Bulletin of the Technical Committee on Data Engineering,1995.
[10]康建萍.基于MVC模式的Struts框架研究與應(yīng)用[J].電腦知識(shí)與技術(shù)(學(xué)術(shù)交流),2008,1(4):653-655,690.
[11]鄔繼成.Struts與Hibernate實(shí)用教程——構(gòu)建基于MVC模式的高效Java Web應(yīng)用[M].北京:電子工業(yè)出版社,2006.
作者簡(jiǎn)介 巨春飛 女,1974年出生,陜西興平人,助教,西安電子科技大學(xué)碩士。研究方向?yàn)檐浖こ獭?/p>