劉紅霞,陸文迪
(南京工業(yè)大學計算機科學與技術學院,江蘇 南京 211816)
改進的MVC設計模式的研究與應用*
劉紅霞,陸文迪
(南京工業(yè)大學計算機科學與技術學院,江蘇 南京 211816)
分析了.NET平臺下傳統(tǒng)MVC設計模式存在的數(shù)據(jù)處理能力低、代碼復用率低等缺陷,結(jié)合中間件和頁面局部刷新技術,提出了一種改進的MVC設計模式。并根據(jù)改進的MVC設計模式,設計了鋼鐵企業(yè)質(zhì)量異議換貨系統(tǒng)。系統(tǒng)運行表明,改進的MVC設計模式的使用,有效增強了系統(tǒng)的魯棒性,平衡了層間耦合性,并提高了代碼的復用率和系統(tǒng)開發(fā)效率。
MVC;中間件;異步刷新;質(zhì)量異議換貨
隨著信息技術和網(wǎng)絡技術的不斷飛躍,辦公自動化系統(tǒng)作為解決企業(yè)日常管理規(guī)范化、增加企業(yè)可控性、提高企業(yè)運轉(zhuǎn)效率等問題的有效手段,已成為各種應用型研究開展實施的主要對象[1]。在辦公自動化系統(tǒng)實現(xiàn)的過程中,常常會為滿足大量相似但不完全相同的業(yè)務需求而不得不做很多重復性的工作,使得系統(tǒng)的結(jié)構(gòu)變得復雜,難以維護和擴充。
MVC設計模式在目前是一種應用比較普遍的設計模式,是實現(xiàn)系統(tǒng)職能分工的典范[2]。經(jīng)過不斷的嘗試和檢驗,它已經(jīng)成為開發(fā)Web應用最合適的模板。MVC設計模式實現(xiàn)了系統(tǒng)各層間的分離,在一定程度上降低了軟件系統(tǒng)的開發(fā)周期和維護成本,使系統(tǒng)具有較高的靈活性、伸縮性和可擴展性[3]。但是,典型的MVC也存在缺陷:傳統(tǒng)開發(fā)方式導致了代碼復雜、復用率低,客戶端對服務器端數(shù)據(jù)的低效率訪問影響了系統(tǒng)的性能。
本文針對MVC設計模式存在的不足,使用中間件和頁面局部刷新等技術對MVC進行改進,并以改進的MVC設計模式為基礎,設計和開發(fā)了鋼鐵企業(yè)的質(zhì)量異議換貨系統(tǒng)。
MVC設計模式適用于大型可擴展的Web系統(tǒng)的開發(fā)。根據(jù)功能的不同,MVC模式將一般的軟件系統(tǒng)劃分為三個部分,即模型(Model)-視圖(View)-控制器(Controller),如圖1所示。
Figure 1 MVC model
模型是整個MVC中的核心部分,封裝了與應用問題中業(yè)務邏輯相關的數(shù)據(jù)以及數(shù)據(jù)的操作過程。模型一方面被控制器使用,完成應用程序的行為改變,另一方面為視圖的狀態(tài)查詢提供相應數(shù)據(jù)。視圖是MVC模式下面向用戶的顯示界面。視圖將用戶數(shù)據(jù)傳送給模型處理,并由控制器控制,從模型處獲得更新后的數(shù)據(jù)進行顯示??刂破魇且晥D和模型間的橋梁,用于處理用戶的操作請求。它從視圖獲取用戶的輸入并決定調(diào)用相應的模型構(gòu)件去處理。
MVC的處理過程是這樣的:對于每一個用戶輸入的請求,首先被控制器接收,并決定由哪個模型來進行處理,然后模型通過業(yè)務處理邏輯處理用戶的請求并返回數(shù)據(jù),最后控制器用相應的視圖格式化模型返回的數(shù)據(jù),并通過顯示頁面呈現(xiàn)給用戶[4]。
這樣劃分MVC,能有效地區(qū)分顯示數(shù)據(jù)和存儲數(shù)據(jù)的功能模塊,使得頁面、數(shù)據(jù)和業(yè)務邏輯之間的耦合度降低。但是,MVC也存在一定的缺陷:在系統(tǒng)開發(fā)過程中,存在許多共性業(yè)務需求,相似功能模塊的開發(fā)往往會因為人員素質(zhì)的不同而破壞代碼的統(tǒng)一性,使代碼邏輯復雜,復用率低;視圖和模型的交互基于請求/響應的模式,這導致更新頁面中的數(shù)據(jù)必須對頁面進行整體刷新,造成視圖對未變化數(shù)據(jù)的不必要的頻繁訪問,降低了訪問效率,使系統(tǒng)處理數(shù)據(jù)能力大大降低。
3.1 改進MVC架構(gòu)設計
本文針對傳統(tǒng)MVC設計模式存在的代碼復用率低、數(shù)據(jù)處理能力低的缺陷,設計了改進的MVC,其在視圖和控制器、控制器與模型的交互中應用了中間件技術,并在視圖層中采用了頁面局部刷新技術,其總體框架如圖2所示。
中間件是基礎軟件的一大類,屬于可復用軟件范疇。中間件處于系統(tǒng)軟件(操作系統(tǒng)、網(wǎng)絡軟件和數(shù)據(jù)庫)之上,應用軟件之下,通過提取某些具體應用中的共性業(yè)務需求,將相關解決方案構(gòu)件化,為處于上層的應用軟件提供運行與開發(fā)的環(huán)境,并通過簡單的客戶化定制,幫助用戶靈活、高效地開發(fā)應用軟件。在改進的MVC設計模式中使用中間件技術,可以把系統(tǒng)開發(fā)過程中相似的功能模塊用相應的中間件來替代,使系統(tǒng)各層間的耦合度進一步降低,提高代碼復用率[5,6]。
頁面局部刷新技術Ajax的使用,可以使用戶請求與服務器響應異步化,實現(xiàn)無刷新更新頁面。Ajax是多種網(wǎng)頁技術的結(jié)合,主要包括HTML、Javascript、DOM等。Ajax使用Javascript中的XmlHttpRequest對象發(fā)送用戶請求并獲得控制器的響應,在不重新載入整個頁面的情況下通過Javascript操作DOM來實現(xiàn)頁面局部更新和異步請求[7],所以系統(tǒng)中頁面導航、數(shù)據(jù)校驗等工作可以交給Ajax來執(zhí)行。同時,不是所有的業(yè)務邏輯都交由服務器進行處理,客戶端負責處理一些簡單的數(shù)據(jù)校驗和數(shù)據(jù)編輯等工作。把原本由控制器和模型完成的工作轉(zhuǎn)移到客戶端來完成,利用客戶端閑置的處理能力來進行處理,減輕了服務器的負擔[8,9]。
3.2 改進MVC處理流程
改進的MVC設計模式的時序圖如圖3所示。用戶通過瀏覽器發(fā)送HTTP請求傳遞給視圖和Ajax,Ajax將請求變量數(shù)據(jù)存儲在JavaScript變量中。如果客戶端能夠直接處理或不需要進行刷新操作,Ajax則直接進行處理,并更新視圖,將結(jié)果返還給用戶,而不能直接被客戶端處理必須由后臺服務器才能完成的操作,Ajax就將請求發(fā)送給控制器,同時通過XML或視圖將實體數(shù)據(jù)也傳輸給控制器,控制器根據(jù)接收的用戶請求,自動判斷需要調(diào)用的中間件和模型來進行操作。當模型接收到請求任務后,將請求數(shù)據(jù)分發(fā)給相應的業(yè)務邏輯模塊,由一個或多個業(yè)務邏輯模塊在服務器端訪問相應數(shù)據(jù)庫資源去完成處理。當處理完成后,控制器把業(yè)務邏輯模塊返回的數(shù)據(jù)通過中間件選擇合適的視圖來進行數(shù)據(jù)格式化,最終把頁面呈現(xiàn)給用戶。
Figure 3 Improved MVC architecture sequence diagram
以下給出基于改進MVC設計模式的質(zhì)量異議換貨系統(tǒng)在某大型鋼鐵企業(yè)辦公自動化系統(tǒng)中的應用實例。系統(tǒng)以Windows Server 2003作為服務器端,Visual Studio 2008和Microsoft SQL Server 2008作為開發(fā)工具,使用了ASP.NET、ADO.NET、Ajax和SOAOffice中間件等開發(fā)技術進行系統(tǒng)開發(fā)。
4.1 系統(tǒng)流程設計
作為企業(yè)辦公自動化系統(tǒng)的一部分,質(zhì)量異議換貨系統(tǒng)主要用來管理企業(yè)中產(chǎn)品由于質(zhì)量問題產(chǎn)生的換貨流程,并對換貨流程進行全程的監(jiān)控。系統(tǒng)流程如圖4所示。
首先,作為發(fā)起人,技術質(zhì)量科的質(zhì)量員提出換貨處理意見并填寫換貨處理單,由質(zhì)量科領導及廠部領導審核;審核通過后,生產(chǎn)科科長安排科員發(fā)起換貨指示;生產(chǎn)科科員根據(jù)實際換貨處理情況判定是否需要原料車間參與換貨流程,若需要則同時通知原料車間及產(chǎn)品管理室,否則只通知產(chǎn)品管理室;原料車間及產(chǎn)品管理室負責人對換貨處理意見進行回復,并由生產(chǎn)科科員進行審核;生產(chǎn)科科員對兩個部門的回復進行審核,若同時通過兩個回復則流程繼續(xù),否則回退給相應部門重新處理;生產(chǎn)科科長對換貨流程進行結(jié)案后,由技術質(zhì)量員填寫考核意見,交由廠部領導審核,通過后最終由綜合科對換貨處理單進行歸檔,方便各部門用戶對換貨處理單的查詢。
Figure 4 Flow diagram of quality objection replacement
4.2 系統(tǒng)框架設計
質(zhì)量異議換貨系統(tǒng)的核心是換貨處理單的流轉(zhuǎn)。傳統(tǒng)的開發(fā)方式一般使用硬編碼并結(jié)合COM組件調(diào)用Office來實現(xiàn)表單功能,導致系統(tǒng)編碼復雜,容易出現(xiàn)Office死進程等缺陷。使用改進的MVC設計模式,并結(jié)合SOAOffice中間件和Ajax技術來進行系統(tǒng)設計,能有效解決以上問題。系統(tǒng)的總體框架如圖5所示。
Figure 5 System architecture
SOAOffice中間件是Office中間件的一種,提供簡潔的調(diào)用接口供應用程序訪問控制Office文檔及其內(nèi)容[10]??刂破魍ㄟ^調(diào)用SOAOffice的視圖組件打開Excel格式的換貨處理單模板并在視圖中顯示。同時,SOAOffice把原本要在服務器端運行的Office運算量交給了客戶機,消除了服務器端運行Office的風險。在系統(tǒng)中,業(yè)務邏輯和訪問服務主要在服務器端處理,通過SOAOffice數(shù)據(jù)組件,控制器調(diào)用模型在服務器端的方法或服務,將用戶輸入的數(shù)據(jù)批量導入數(shù)據(jù)庫,從而避免了數(shù)據(jù)的重復錄入,提高了數(shù)據(jù)存取的效率。
4.3 改進MVC設計模式應用評價
分別使用傳統(tǒng)MVC設計模式和改進MVC設計模式對質(zhì)量異議換貨系統(tǒng)中核心模塊進行開發(fā),統(tǒng)計出各自代碼復用情況,如表1所示。中間件技術在改進MVC中的使用,使系統(tǒng)開發(fā)過程中可復用的代碼顯著增加,同時降低了代碼總行數(shù),提高了系統(tǒng)的代碼復用率。
Table 1 Comparative table of code reuse situation表1 代碼復用情況對比表
MVC設計模式在目前是一種應用比較普遍的設計模式,本文針對傳統(tǒng)MVC設計模式存在的缺陷,提出一種新的融合MVC的設計思想、頁面異步刷新技術和中間件技術優(yōu)點的模式,并成功地將此種架構(gòu)模式應用于企業(yè)質(zhì)量異議換貨系統(tǒng)的架構(gòu)設計中。項目實踐表明該設計模式提高了系統(tǒng)的開發(fā)效率和代碼的可復用率,并且降低了各層間的耦合性,為其他具有同種結(jié)構(gòu)的應用系統(tǒng)的研發(fā)提供了一定的參考。
[1] Han Hong-bang. The design of online document signing system based on .NET[J]. Technology Bulletin of Science and Technology,2012,28(12):107-109.(in Chinese)
[2] Zhao Wei,Wang Zhi-hua,Zhou Bing. Novel architecture pattern based on .NET and MVC[J]. Computer Engineering and Design,2012,33(7):2646-2651.(in Chinese)
[3] Zhao Wei,Wang Zhi-hua,Zhou Bing. Design and implementation of e-ERP based on MVC[J]. Computer Applications and Software,2013,30(2):106-109.(in Chinese)
[4] Lin Qing,Zhu Cui-miao,Zheng Guang-cheng,et al. Study on MVC design pattern in ASP.NET[J]. Computer Engineering and Design,2008,29(1):106-109.(in Chinese)
[5] Wang Wen,Chen Zhi-wei,Wang Shu-feng. The design and realization of online editing text management system based on component technology[J]. Machine Design and Manufacturing Engineering,2012,41(23):89-91.(in Chinese)
[6] Liu Yi-xuan,Li Guang-yao,Liu Xiao-jing,et al. Design and implementation of online endorsement process based on ASP.NET [J]. Computer Engineering and Design,2010,31(3):525-528.(in Chinese)
[7] Tang Yong-rui ,Zhang Da-min. The research and design of the information system based on Ajax and MVC pattern[J]. Application of Electronic Technique,2014,40(2):128-130.(in Chinese)
[8] Yang Yan-lan, Jin Xiao-xue, Ye Hua. ASP.NET AJAX framework and its application in web development[J].Computer Applications and Software,2011,28(6):195-198.(in Chinese)
[9] Ni Jun-hong,Zhang Li,Zhang Miao,et al. Design and implementation of power communication alarm system based on Ajax and MVC[J]. Computer Applications and Software, 2012,30(8):226-227.(in Chinese)
[10] La Fen-hua,Chen Hong-xing,Li De-yu,et al. Contract generation and data extraction program for Web environment based on SOAOffice middleware[J]. Journal of Computer Applications,2012,32(S1):73-76.(in Chinese)
附中文參考文獻:
[1] 韓紅幫.基于.NET技術的網(wǎng)上公文簽收系統(tǒng)設計[J].科技通報,2012,28(12):107-109.
[2] 趙偉,王志華,周兵.基于.NET技術和MVC的新架構(gòu)模式[J].計算機工程與設計,2012,33(7):2646-2651.
[3] 趙偉,王志華,周兵.基于MVC的e-ERP系統(tǒng)的設計與實現(xiàn)[J].計算機應用與軟件,2013,30(2):106-109.
[4] 林慶,朱翠苗,鄭廣成,等.基于ASP.NET的MVC設計模式的研究[J].計算機工程與設計,2008,29(1):106-109.
[5] 王文,陳志偉,王樹鋒.基于中間件的文檔在線編輯管理技術的實現(xiàn)[J].中國制造業(yè)信息化,2012,4(23):89-91.
[6] 劉宜軒,李光耀,劉曉靜,等.ASP.NET環(huán)境下的網(wǎng)上審批流程的設計及實現(xiàn)[J].計算機工程與設計,2010,31(3):525-528.
[7] 唐永瑞,張達敏.基于Ajax與MVC模式的信息系統(tǒng)的研究與設計[J].電子技術應用,2014,40(2):128-130.
[8] 仰燕蘭,金曉雪,葉樺.ASP.NET AJAX框架研究及其在Web開發(fā)中的應用[J].計算機應用與軟件,2011,28(6):195-198.
[9] 尼俊紅,張麗,張淼,等.基于Ajax和MVC的電力通信告警系統(tǒng)的設計實現(xiàn)[J].計算機應用與軟件,2012,30(8):226-227.
[10] 剌奮華,陳紅星,李德玉,等.Web環(huán)境下基于SOAOffice中間件的合同生成與數(shù)據(jù)抽取方案[J].計算機應用,2012,32(S1):73-76.
劉紅霞(1964-),女,江蘇江陰人,博士,副教授,研究方向為工業(yè)綜合自動化研究與實現(xiàn)。E-mail:lhx_cec@126.com
LIU Hong-xia,born in 1964,PhD,associate professor,her research interests include research and realization of integrated automation of industry.
Research and implementation of an improved MVC design pattern
LIU Hong-xia,LU Wen-di
(College of Computer Science and Technology,Nanjing Tech University,Nanjing 211816,China)
The traditional MVC design pattern on .NET platform has defects of defects of low data processing capability and low code reuse. Using the middleware and asynchronous refresh techniques, we propose an improved MVC design pattern. Based on the improved MVC, we design a quality objection replacement system for iron and steel enterprises. System operation indicates the improved MVC effectively enhances the robustness of the system, balances the coupling between layers and increases the code reuse rate and the efficiency of system development.
MVC;middleware;asynchronous refresh;quality objection replacement
1007-130X(2015)09-1688-04
2014-11-17;
2015-01-27
TP311.53
A
10.3969/j.issn.1007-130X.2015.09.015
通信地址:211816 江蘇省南京市南京工業(yè)大學電子與信息工程學院
Address:College of Computer Science and Technology,Nanjing Tech University,Nanjing 211816,Jiangsu,P.R.China