蘇揚
摘要:隨著互聯(lián)網(wǎng)的快速發(fā)展,軟件產(chǎn)業(yè)也在蓬勃發(fā)展。與此同時,軟件系統(tǒng)的構(gòu)架方法也多種多樣,而MVC則是目前發(fā)展最好的軟件構(gòu)架方法。與其他的軟件構(gòu)架方法相比,MVC則是運用了表示層、業(yè)務(wù)層和數(shù)據(jù)層等所形成的復(fù)合型結(jié)構(gòu)實現(xiàn)了計算機的控制器以及視圖功能,更為系統(tǒng)安全。該文將介紹ASP.NET MVC架構(gòu),分析了解MVC架構(gòu)與Web的開發(fā)設(shè)計,并就MVC架構(gòu)在ASP.Net站點開發(fā)所具有的意義進行探討。
關(guān)鍵詞:ASP.NET站點;MVC架構(gòu);Web開發(fā);開發(fā)效率
中圖分類號:TP311? ? ? 文獻標識碼:A
文章編號:1009-3044(2021)33-0053-02
開放科學(xué)(資源服務(wù))標識碼(OSID):
1 前言
MVC架構(gòu)是三個英文單詞的首字母縮寫,譯為模型、視圖、控制器,是近年來十分流行的一種軟件架構(gòu)方式,也可以稱為模式。MVC架構(gòu)同時也是一種開發(fā)的概念,大大提高了軟件的開發(fā)速度和質(zhì)量,也提高了軟件的可維護性。而ASP.NET作為NET Framework的重要組成,實際上是微軟公司新開發(fā)的用以開發(fā)Web的平臺,能夠滿足企業(yè)級Web的應(yīng)用程序的需求。因為ASP.NET是運用通用語言來進行編譯運行的,所以它可以支持面向?qū)ο蟮木幊陶Z言的操作。MVC的設(shè)計模式將前端視圖顯示、業(yè)務(wù)和控制邏輯進行了分離,使得對于應(yīng)用程序的控制更為方便,又保證了系統(tǒng)能夠平穩(wěn)運行,提高了可拓展性。
2 ASP.NET MVC架構(gòu)
2.1 MVC架構(gòu)的相關(guān)介紹
MVC架構(gòu)的主要內(nèi)容如其名字所示,分為三個組成部分:Model(模型)、View(視圖)、Controller(控制器)。這三個組件之間都有給彼此提供的接口,用以實現(xiàn)這三個組件的通信與同步。
2.1.1模型(MODEL)
模型的范圍太廣,不夠準確,用“數(shù)據(jù)模型”來闡述MVC架構(gòu)的這一組件則更為貼切。正如Model本身所具有的含義所示,它主管的部分也是與數(shù)據(jù)有關(guān)。具體來說,Model可以定義數(shù)據(jù)的結(jié)構(gòu),與數(shù)據(jù)庫進行交互,判斷數(shù)據(jù)的信息格式正誤以及對數(shù)據(jù)信息進行加工處理等與數(shù)據(jù)相關(guān)的操作任務(wù)。那么,什么是數(shù)據(jù)庫呢?就是指保存在磁盤中的關(guān)于程序的數(shù)據(jù)文件。而Model就是數(shù)據(jù)庫中數(shù)據(jù)的抽象。還有查詢信息、添加數(shù)據(jù)信息、更新數(shù)據(jù)以及刪除數(shù)據(jù)信息等有關(guān)操作也都需要在Model層進行操作。形象地介紹一下就是Model相當(dāng)于ASP.NET的命名空間。
2.1.2視圖(VIEW)
視圖,具體來說就是頁面視圖,是ASP.NET程序的交互界面,主要提供與用戶輸入信息和輸出信息給用戶的相關(guān)服務(wù)。一個Web頁面可以由一個或多個視圖所組成,而一個復(fù)雜的Web頁面內(nèi)容可能會來自多個數(shù)據(jù)源。與此同時,.aspx頁面是視圖在ASP.NET站點中的保存。這樣,相關(guān)編輯人員和美工人員就可以在設(shè)計時僅處理相應(yīng)的.aspx頁面。
2.1.3控制器(CONTROLLER)
控制器的作用除了可以與用戶交互以外,還具有處理業(yè)務(wù)邏輯的功能,在軟件操作中發(fā)揮著重要的作用。它既能夠在Model層讀取所需的數(shù)據(jù),又能夠控制信息在頁面視圖中的顯示。與此同時,在發(fā)生異常的情況時,控制器可以在相關(guān)的界面進行響應(yīng)。
2.2 MVC所具有的相關(guān)優(yōu)勢
MVC架構(gòu)相比于其他的架構(gòu)方式所獨具有的優(yōu)勢分主要為三個方面。
2.2.1良好的拓展性
因為MVC是基于管道所進行設(shè)計的,因而具有良好的拓展性。它可以實現(xiàn)通過路徑引導(dǎo)、處理HTTP請求以及URL解析返回瀏覽器等一系列措施進行運行。
2.2.2定義攔截器
通過HttpModule類的形式來定義的攔截器可以通過解析目標Controller類型和Action名稱,明確具體位置,激活目標控制器,執(zhí)行相應(yīng)的Action方法一系列操作定義HttpHandler。還同時激活控制器以及運行Action方法。
2.2.3功能模塊分層
從Action方法的執(zhí)行到最后頁面視圖的顯示這個過程不會直接進行,而是通過將其轉(zhuǎn)換為HTML的形式進行,并且最終會以HTTP響應(yīng)的方式返回到客戶端的瀏覽器。而這個過程中,MVC架構(gòu)將復(fù)雜的邏輯進行分離。然后,再對分離出的相對更簡單、也更單一的邏輯進行逐層關(guān)注,也就是分層處理相應(yīng)的流程。將系統(tǒng)依據(jù)不同的運行功能分層,劃入三層類庫中去。這種方法在大型架構(gòu)的開發(fā)方面具有的優(yōu)勢更為明顯,大大促進了團隊分工,降低了開發(fā)的難度,與此同時,也使得系統(tǒng)更為可靠安全。
3 ASP.NET MVC架構(gòu)與Web的相關(guān)設(shè)計
3.1系統(tǒng)設(shè)計
MVC架構(gòu)在系統(tǒng)設(shè)計方面涵蓋廣泛。其中,辦公系統(tǒng)更是涉及方方面面。
我們可以先對系統(tǒng)設(shè)計的背景先進行一定的了解。系統(tǒng)的開發(fā)環(huán)境是Visual Studio 2010,運用的是SQLSERVER2008R2的數(shù)據(jù)庫,ASP.NET MVC架構(gòu),在.aspx的文件中得到視圖部分,JS框架,CSS框架,客戶端驗證,動態(tài)頁簽,數(shù)據(jù)表格等相關(guān)技術(shù)應(yīng)用于視圖的前端。其中,aspx.cs的后臺代碼文件也可以在頁面控制器中進行應(yīng)用。而Framework則用來提供和業(yè)務(wù)沒有關(guān)系的底層通用機制以及相關(guān)功能。而Model基類則可以提供傳輸數(shù)據(jù)以及底層的最基本的基類以及接口。HttpModule則可以應(yīng)用于管道模塊中去。其中,將各個應(yīng)用以及網(wǎng)站系統(tǒng)分為三個層次:表示層、業(yè)務(wù)層以及數(shù)據(jù)訪問層。與此同時,將管道模塊的通用功能應(yīng)用到這三個層次當(dāng)中去。其中,需要業(yè)務(wù)層以及數(shù)據(jù)層的共同作用來實現(xiàn)Model的功能。
個人方面的辦公管理,審批流程的建立,收發(fā)公文告示等,下屬任務(wù)的發(fā)布,相關(guān)知識文檔的建立,應(yīng)用的拓展,客戶關(guān)系的需要,進賬、銷賬、存賬之類的管理,還有項目、人力、生產(chǎn)、信息、組織、系統(tǒng)方面的管理以及附件程序等多個功能都可以通過MVC架構(gòu)來實現(xiàn)。從一定程度上來說,這種辦公系統(tǒng)將辦公系統(tǒng),客戶關(guān)系管理系統(tǒng)以及人力資源管理系統(tǒng)都融入了進來,使MVC架構(gòu)用以系統(tǒng)的設(shè)計十分全面,滿足了系統(tǒng)設(shè)計的需求。
3.2 MVC架構(gòu)的具體設(shè)計
在控制器方面,為了快速完成對客戶端請求的處理,控制器就相應(yīng)地定義了許多個控制器類來進行。其中,對于控制權(quán)限的請求,可以通過控制器中的RoleController來實現(xiàn)管理。這樣,系統(tǒng)中的每一個用戶的控制權(quán)限的請求都對應(yīng)一個command。與此同時,每一個command都對應(yīng)一個控制器類,因而Controller類就能夠?qū)崿F(xiàn)對客戶端的總控功能。
在頁面視圖方面,控制器在對調(diào)用模型方面的業(yè)務(wù)進行處理后會將結(jié)果展現(xiàn)在頁面視圖上,而與此同時,在權(quán)限管理方面的相關(guān)功能則會最終顯示在Role視圖下的Edit.aspx當(dāng)中。
4 MVC架構(gòu)在ASP.NET站點開發(fā)所具有的意義
起初,創(chuàng)建MVC模式主要就是為了簡化軟件的開發(fā)過程。1979年提出的MVC架構(gòu),在Smalltalk程序設(shè)計語言中進行相關(guān)的應(yīng)用。而且,在當(dāng)時的時代發(fā)展背景下,Smalltalk也是十分熱門的程序設(shè)計語言。MVC架構(gòu)將業(yè)務(wù)邏輯和數(shù)據(jù)表示進行了分離,這就使得程序的編寫過程具有了模塊化的特點,而與此同時,程序的可維護性也隨之大大提高。
4.1降低開發(fā)的復(fù)雜程度
通過將業(yè)務(wù)邏輯層以及數(shù)據(jù)顯示層進行分離,將站點開發(fā)中的復(fù)雜難度降低。在設(shè)計基于Web的應(yīng)用程序時,一般情況下對于用戶界面邏輯需求的相關(guān)修改要遠多于業(yè)務(wù)邏輯層方面的修改。也就是說,當(dāng)基于Web的應(yīng)用程序?qū)懞靡院?,用戶很可能對用戶界面提出一些修改要求。?dāng)然,這些要求可能會影響已經(jīng)做好的頁面布局。但是,如果利用MVC架構(gòu),就可以減少因改動而引起的其他層次的結(jié)構(gòu)內(nèi)容也要進行的修改??梢宰龅皆谛薷捻撁嬉晥D的同時不影響數(shù)據(jù)和業(yè)務(wù)邏輯,這樣既解決了問題,也將代碼的編寫難度簡單化了。
4.2提高代碼的可維護性
因為模型、視圖和控制器都是相互獨立、相對分離的,當(dāng)改動數(shù)據(jù)層或者業(yè)務(wù)規(guī)則時其他方面也不會受影響。例如,原來系統(tǒng)的數(shù)據(jù)庫使用的是MySQL,現(xiàn)在需要變更了,那么只要將模型Model進行更改就可以將數(shù)據(jù)庫遷移到SQL Server的數(shù)據(jù)庫中去。這樣,只要Model模型中的設(shè)置是正確的,那么視圖就不會受到數(shù)據(jù)源指向的影響,從而將結(jié)果正確地顯示出來。
4.3提高代碼的重用率
如果將多個視圖共用一個數(shù)據(jù)模型,那么程序代碼的重用率就會得到很大的提高。而MVC架構(gòu)就實現(xiàn)了這一點。例如,需要用到業(yè)務(wù)邏輯層的用戶信息查詢地址,那么就可以通過直接調(diào)用Model中的方法來實現(xiàn)。
4.4方便團隊的分工合作
MVC架構(gòu)可以讓團隊的分工合作更容易,從而有效地提高了軟件的質(zhì)量和開發(fā)速度。其中,很大一部分的數(shù)據(jù)模型和存儲過程等都可以通過使用相關(guān)的工具自動完成。而在控制器方面,因為控制器系統(tǒng)的業(yè)務(wù)邏輯關(guān)系,要求控制器的性能要比較穩(wěn)定。所以,控制器這部分一般要交給有經(jīng)驗的編程技術(shù)人員來完成,而與此同時,視圖部分一般也要交給系統(tǒng)分析人員以及站點的美工人員來完成。
4.5提高了開發(fā)的效率
ASP.NET MVC架構(gòu)可以使用Visual Studio進行軟件的開發(fā),與此同時,ASP.NET也支持加載插件功能的使用,因而大大提高了開發(fā)人員的編碼效率。并且,可以采用MVC結(jié)構(gòu)+代碼自動生成器的技術(shù)架構(gòu),從而減少了編碼的程序員的工作量。
5 小結(jié)
其實,MVC架構(gòu)顛覆了傳統(tǒng)的ASP程序開發(fā)的模式,不僅廣泛應(yīng)用于ASE.NET的開發(fā),在PHP、Java等的程序語言在用來開發(fā)軟件系統(tǒng)時也會首先選用MVC架構(gòu)。本文也從MVC架構(gòu)的三個方面進行介紹,并簡單地介紹了MVC架構(gòu)中的一些相關(guān)技術(shù)。不難看出,MVC架構(gòu)在軟件開發(fā)方面所具有的優(yōu)勢。MVC架構(gòu)的使用可以大大地提高程序員的編碼效率,減少編碼工作量,并提高程序軟件的質(zhì)量以及可維護性,提高開發(fā)的效率。同時,也可以增強程序軟件開發(fā)中團隊分工,團隊合作的能力。
參考文獻:
[1] 韓瀟影,劉峰民.基于ASP.NET MVC架構(gòu)的省級氣象預(yù)警信息平臺[J].軟件,2020,41(9):112-114.
[2] 孫濤.基于ASP.NET MVC架構(gòu)的病例管理系統(tǒng)的設(shè)計與實現(xiàn)[D].沈陽:東北大學(xué),2017.
[3] 王勃.基于ASP.NET中MVC三層架構(gòu)結(jié)合的Web設(shè)計[J].智能城市,2016,2(12):225.
[4] 王素芳,胡必波.基于多層架構(gòu)的ASP.NET 4 MVC框架研究[J].電腦與電信,2015(10):64-66.
[5] 向?qū)?基于ASP.NET MVC架構(gòu)模式的迎新系統(tǒng)的設(shè)計與實現(xiàn)[J].現(xiàn)代商業(yè),2015(17):63-64.
[6] 何銀川,朱勝利.基于ASP.NET MVC的多層架構(gòu)的OA系統(tǒng)的設(shè)計與實現(xiàn)[J].現(xiàn)代計算機(專業(yè)版),2013(11):58-64.
【通聯(lián)編輯:唐一東】