孫林 于海春 李星宇
摘 要:隨著網絡信息技術的發展,基于B/S的web分布式應用體系架構已經被廣泛地應用。MVC設計模式的出現,將模型層、視圖層、控制層進行分離,極大的降低了各組件之間的耦合度,提高了代碼的重用性可維護性。文章討論了SpringMVC等后端技術框架,B/S三層技術架構模式等架構思想。同時采用層次化、組件化和面向對象的設計思想,盡量降低不同功能模塊之間的耦合粒度,以保證系統的可擴展性。
關鍵詞:MVC模式;SpringMVC;軟件架構;WEB開發
1 web應用技術的起源和發展前景
Web應用發展的集中在分布式計算領域,Web 系統從開發出現以來,就以成本低、推廣易、靈活性高為優勢,在計算機領域得到了迅速的發展。當前,Web 系統已經成功的應用社會生活中的方方面面,這也成功的推動了IT 浪潮的發展,在看到IT技術企業所展現的巨大經濟利潤之后,對于Web 系統的開發更為迫切。
為了解決一類重復出現的問題,從而使代碼不斷使用形成一套重用的解決方案,人們引入了設計模式的概念。對于軟件開發過程中產生的冗余和重復的代碼,我們通過應用例如:單例模式、觀察者模式、工廠模式等設計模式的思想,會在開發中提供一套全新的解決方案,使代碼達到高內聚、松耦合的效果。
2 MVC三層架構分析
MVC全名是Model View Controller,分別代表著模型層,視圖層和控制層。MVC和軟件開發的三層架構有著極為密切的聯系,在web項目開發中使用三層架構的總體布局,具體采用MVC模式的軟件設計風格,通過SSM/SSH(Spring,SpringMVC,Mybatis/Hibernate)等框架進行具體業務的分析和搭建完成整個項目的提交。
在SpringMVC框架中,DispatcherServlet(前端控制器)占據核心位置,一方面負責接收客戶端用戶的請求,另一方面它會與HandlerMapping(處理器映射器)進行交互,此過程中會根據XML配置和JAVA類中的注解產生執行結果,之后由后端控制器與處理器映射器進行交互,將執行結果的ModelAndView(模型和視圖)回拋給前端控制器進行解析和渲染視圖產生具體的View(視圖)返回給客戶端用戶。整個流程充分應用各個組件的作用,工程師只需要進行View視圖的渲染和處理器Handler的開發,極大地減少了開發過程中的代碼量,降低了代碼的耦合度,各個模塊的業務之間相分工明確、相互聯系,使得開發周期大大縮減,推動了C/S(客戶端/服務端)架構的迅速發展。
2.1 視圖層(JSP)
View視圖用來渲染模型。視圖層是用戶直接看到的Web應用的界面,它為用戶提供了一個可視化的界面和操作空間,也是用戶與Web應用進行直接交互的渠道。在JavaWeb中,視圖層不僅支持HTML、XML、XHTML等基礎標記語言,還支持JavaScript、Bootstrap等腳本、框架語言,甚至還可以支持JSP通過后臺動態生成頁面,作為實現真正的用戶交互功能的媒介,視圖層使得MVC架構的Web應用功能更加強大豐富。
2.2 模型層(DAO)
Model(模型),表示應用數據和業務規則。模型層是真正用來實現各項功能的模塊,負責處理業務邏輯和業務規則,例如連接數據庫進行增刪改查操(DAO)、動態生成頁面等交互功能。在使用DAO構建模型層的同時,還可以配合緩沖池、緩存等技術手段來降低數據庫的訪問量,從而提升MVC框架應用的穩定性和并發查詢能力。
2.3 控制器(Servlet)
Controller(控制器)的核心功能主要分為兩部分。一方面解釋客戶端界面的輸入,調用Model模型中的方法,另一方面通過將模型數據和執行結果填充至視圖中,進而把View視圖顯示給用戶,這一過程主要由Servlet完成。在SpringMVC中,對于客戶端提交的請求經過DispatcherServlet分發之后到達控制器,在業務處理層處理之后會將結果進行封裝,從而產生一個Model,然后經過View視圖層交互之后就會將Model進行展示。因此當接收到用戶的請求時,它只是決定調用哪些Model層和View層去進行處理和返回執行結果,但是控制器本身不會有任何輸入和輸出。
2.4 MVC架構優勢分析
(1)可以降低各模塊之間的耦合度;
(2)實現各層之間的代碼復用;
(3)有利于實現代碼的標準化;
(4)有利于系統的動態模塊化更新;
(5)便于團隊分工開發。
3 舊模式開發缺點
不使用框架進行Web應用開發會造成以下幾個缺點。
(1)HTML和JAVA代碼同時在JSP頁面中進行編寫,增加開發周期,降低了代碼的可讀性;
(2)在實現各模塊的業務邏輯時,由于代碼復雜混亂,對團隊的分工開發造成困難;
(3)后期對系統進行運維和功能擴展時會非常麻煩。例如在JSP頁面進行數據庫連接和操作,如果需要對數據庫進行任何修改,都必須打開所有操作數據庫的JSP頁面進行相應的修改,當頁面非常多的時候,工作量相當大;
(4)系統不容易調試,由于HTML、Java、JavaScript都混合在一起,而Java語言的運行需要每次修改后都重新編譯運行,因此必須要啟動服務器并調用 JSP頁面才能查看運行效果。在進行大型項目開發時,啟動速度慢,效率低下。
當Web應用程序功能十分簡單時,如果再遵循MVC框架進行開發,那么就會導致原本的簡單系統反而變得復雜、冗余,會徒增多余操作,從而降低簡單系統的運行效率。
4 MVC架構性能提升
如果僅使用簡單的MVC架構進行開發,毫無疑問,這個Web應用的性能也是有瓶頸的,受到服務器內存、CPU等性能和并發量等條件的約束。
4.1 靜態緩存
靜態緩存是指將MVC框架中的視圖層中的HTML、JSP中的HTML、JavaScript、圖片、視頻等靜態文件和資源通過緩存、增加響應方式等方法,降低Web應用和服務器的壓力,從而提高系統性能。
(1)CDN技術。CDN全稱是ContentDeliveryNetwork,即內容分發網絡,通過部署邊緣鏡像服務器,智能調度算法等操作,使用戶就近訪問靜態資源,降低網絡擁塞,提升主站系統性能。
(2)服務器內存緩存。通過Varnish,實現服務器內存緩存靜態資源功能,效率高。
(3)Nginx內存緩存。通過修改Nginx配置文件,實現Nginx的內存緩存靜態資源功能,靈活性和效率都很高。
4.2 動態緩存
動態緩存是指將MVC中需要經過模型層處理后的動態生成的資源進行緩存。
適用條件:
(1)此動態資源被請求數量多;
(2)此動態資源被修改次數少;
(3)此動態資源對即時性要求低。
例如在購物網站的場景中,每個店家的商品資源就可以使用動態緩存技術,從而提升性能和穩定性,抵抗高并發。每個店家的商品可能在同一時間內被多次請求查看,將此動態資源放入動態緩存中,于是每次請求都不需要查詢數據庫,避免了大量的數據庫的IO操作。當有商品被修改時,只需要重新請求一次數據庫,再做緩存即可。
5 結論
綜上所述,在JavaEE等web項目開發中,MVC設計模式的應用在很大程度上減小了不同程序間的差異性,將錯亂復雜的程序設計變得更容易,改善程序的理解性的同時增強程序的可維護性,彌補目前程序開發技術的不足,給互聯網絡注入新的生機和活力。
參考文獻:
[1]閆帥領,徐蕾,趙亮,蘇冬梅.基于MVC模式的信息系統開發模式研究[J].科技與創新,2018(08):22-23.
[2]張雪敏.淺議MVC設計模式在JavaWeb中的作用[J].科技風,2018(22):58-59.
[3]于春娜,王晨升,楊光,郭世龍,劉豐.Web前端MVC框架的意義研究[J].產業與科技論壇,2014,13(01):52-53.
作者簡介:孫林(1998-),男,專業方向:電子信息工程。