任 靖
(運(yùn)城職業(yè)技術(shù)學(xué)院 山西 運(yùn)城 044000)
MVC全稱為Model——View——Controller,它是模型-視圖-控制器的簡(jiǎn)寫,一種程序設(shè)計(jì)模式,這種模式將業(yè)務(wù)邏輯、程序控制、界面顯示進(jìn)行分離,把業(yè)務(wù)邏輯和數(shù)據(jù)處理作為模型獨(dú)立出來,在修改界面和用戶交互的過程中,模型部分不需要修改。模型是處理數(shù)據(jù)邏輯和業(yè)務(wù)邏輯的組件,模型對(duì)象的一個(gè)重要任務(wù)就是在數(shù)據(jù)庫中存取數(shù)據(jù)。視圖是處理數(shù)據(jù)顯示組件,視圖依據(jù)模型對(duì)象創(chuàng)建??刂破魇翘幚碛脩艚换サ慕M件,控制器從視圖中獲取數(shù)據(jù),把獲取的數(shù)據(jù)發(fā)送給模型。如圖1所示。
圖1
Asp.net MVC分層設(shè)計(jì),有利于開發(fā)人員協(xié)同開發(fā)。比如一個(gè)開發(fā)團(tuán)隊(duì),分成4個(gè)小組,我們暫時(shí)稱其為A、B、C、D組。當(dāng)一個(gè)軟件項(xiàng)目完成分析設(shè)計(jì)后,項(xiàng)目組拿到詳細(xì)設(shè)計(jì)說明書。此時(shí),四個(gè)小組可以同步進(jìn)行開發(fā)工作。A小組根據(jù)設(shè)計(jì)說明書進(jìn)行html前端頁面的開發(fā)(視圖開發(fā)設(shè)計(jì)),腳本的編寫;B小組根據(jù)設(shè)計(jì)說明書進(jìn)行控制器的開發(fā),控制邏輯;C小組根據(jù)設(shè)計(jì)說明書開發(fā)模型,模型部分主要包括數(shù)據(jù)處理、業(yè)務(wù)邏輯處理;D小組則根據(jù)詳細(xì)設(shè)計(jì)說明書進(jìn)行數(shù)據(jù)庫的設(shè)計(jì)開發(fā)。
Asp.net MVC分層設(shè)計(jì)可以分解軟件的開發(fā)過程,可以使不同的開發(fā)小組專注與開發(fā)摸一個(gè)組件。比如:在不依賴業(yè)務(wù)邏輯的情況下進(jìn)行視圖的分析設(shè)計(jì)。程序的各種測(cè)試更加容易。Asp.net MVC分層設(shè)計(jì)簡(jiǎn)化了分組開發(fā)。幾個(gè)開發(fā)小組可同時(shí)開發(fā)視圖組件、控制器組件和業(yè)務(wù)邏輯組件。
Asp.net MVC分層設(shè)計(jì)的特性:(1)多個(gè)不同的視圖對(duì)應(yīng)一個(gè)模型,大大減少了代碼的復(fù)制, 易于測(cè)試和維護(hù);(2)三層分離設(shè)計(jì),只要改變視圖組件,就會(huì)滿足系統(tǒng)的改變需求;(3)控制器組件包括了用戶的請(qǐng)求處理,這樣不同的視圖和模型組合,能夠響應(yīng)不同的用戶請(qǐng)求。
Asp.net MVC分層設(shè)計(jì)應(yīng)用于不同開發(fā)環(huán)境中或用戶有特殊需求時(shí),其有以下幾個(gè)方面的不足:(1)對(duì)于非常簡(jiǎn)單的程序,也被要求遵守Asp.net MVC分層設(shè)計(jì)原則,會(huì)增加結(jié)構(gòu)的復(fù)雜度,可能降低程序運(yùn)行效率;(2)控制器組件與視圖組件之間的密切關(guān)系,在一定程度上會(huì)妨礙它們的獨(dú)立性;(3)模型組件的接口并不完全相同,為了獲取需要的數(shù)據(jù),在交互時(shí)就會(huì)需要進(jìn)行多次的調(diào)用訪問,頻繁的訪問,特別是數(shù)據(jù)庫訪問對(duì)操作性有害,造成程序效率低下。
Asp.net MVC分層設(shè)計(jì)是以ASP.NET平臺(tái)為基礎(chǔ),它使用了MVC設(shè)計(jì)模式,具有結(jié)構(gòu)清晰明確,擴(kuò)展性好等特點(diǎn)。Asp.net MVC分層設(shè)計(jì)把整個(gè)軟件系統(tǒng)分為3個(gè)基本部分:模型,視圖和控制器。模型組件主要負(fù)責(zé)應(yīng)用程序的業(yè)務(wù)邏輯;視圖組件定義屏幕上的顯示,以及用戶的數(shù)據(jù)流向;控制器組件定義對(duì)用戶請(qǐng)求的響應(yīng),進(jìn)而把用戶的請(qǐng)求變成對(duì)模型組件的命令,最后來更新視圖組件的數(shù)據(jù),反映系統(tǒng)的信息變化。
模型組件。模型組件作為Asp.net MVC分層設(shè)計(jì)的重要組成部分,包括系統(tǒng)的邏輯業(yè)務(wù)和數(shù)據(jù)庫操作。模型組件不僅能對(duì)系統(tǒng)中的數(shù)據(jù)和業(yè)務(wù)邏輯部分進(jìn)行顯示,而且提供了處理各種問題的操作流程。模型組件與視圖組件間保持著一對(duì)多的關(guān)系,一個(gè)模型組件可以對(duì)應(yīng)多個(gè)視圖組件,并且能為視圖組件提供訪問數(shù)據(jù)的操作過程,獲取視圖顯示所需要的數(shù)據(jù)。
視圖組件。視圖組件是用戶與系統(tǒng)間的交互界面,主要負(fù)責(zé)數(shù)據(jù)顯示,即由控制器組件將用戶或者系統(tǒng)的請(qǐng)求發(fā)送給模型組件進(jìn)行處理,模型組件再結(jié)合用戶的請(qǐng)求完成相應(yīng)的操作,再由控制器傳遞給視圖組件進(jìn)行顯示。視圖組件中不存在任何業(yè)務(wù)邏輯代碼,視圖組件在本質(zhì)上可以看做是一個(gè)可以顯示數(shù)據(jù)、用戶能夠進(jìn)行輸入的界面。一個(gè)視圖組件只能對(duì)應(yīng)一個(gè)控制器組件。
控制器組件。控制器組件作為連接模型組件和試圖組件的橋梁,是Asp.net MVC分層設(shè)計(jì)的中間組件,它接收用戶的輸入,對(duì)用戶的請(qǐng)求進(jìn)行響應(yīng)??刂破鹘M件對(duì)模型組件、視圖組件的交互進(jìn)行協(xié)調(diào),使模型組件和相應(yīng)的視圖組件相互配合,向視圖組件輸出數(shù)據(jù),視圖組件呈現(xiàn)處理結(jié)果,完成用戶請(qǐng)求。在ASP.NET MVC架構(gòu)中,用戶的請(qǐng)求都會(huì)被路由到控制器組件,控制器組件執(zhí)行請(qǐng)求、操作模型組件,把視圖組件進(jìn)行傳輸。控制器組件被置于/Controllers目錄中,模型組件放在/Models目錄中,視圖組件放在/Views目錄中。它是默認(rèn)的目錄結(jié)構(gòu)??刂破鹘M件類的命名一定要以Cont roller結(jié)尾,每個(gè)控制器組件類在/Views目錄中有一個(gè)對(duì)應(yīng)的子目錄,命名要遵循子目錄和控制器組件類一致的原則。
在ASP.NET MVC項(xiàng)目中,應(yīng)用程序項(xiàng)目通過Global.asax和Controllers進(jìn)行URL映射。當(dāng)用戶進(jìn)行頁面請(qǐng)求時(shí),該請(qǐng)求會(huì)被發(fā)送到控制器組件中,開發(fā)人員在控制器組件中創(chuàng)建相應(yīng)的方法將請(qǐng)求發(fā)送到視圖組件中,視圖組件會(huì)使用在控制器組件中創(chuàng)建的相應(yīng)的變量呈現(xiàn)頁面。用戶在瀏覽器中進(jìn)行不同的頁面請(qǐng)求時(shí),該運(yùn)行過程將會(huì)再次執(zhí)行。對(duì)于模型組件來說,控制器組件通常情況下使用模型組件操作數(shù)據(jù)庫。在模型組件中,模型組件能夠?qū)鹘y(tǒng)的關(guān)系型數(shù)據(jù)庫映射成面向?qū)ο蟮拈_發(fā)模型,開發(fā)人員能夠使用面向?qū)ο蟮乃枷脒M(jìn)行數(shù)據(jù)庫的數(shù)據(jù)存取。
ASP.NET MVC框架的推出,使程序結(jié)構(gòu)更加清晰、靈活,提高了程序的可測(cè)試性和代碼的可重用性。由此可見ASP.NET MVC在Web應(yīng)用程序開發(fā)中專業(yè)性強(qiáng),優(yōu)勢(shì)明顯,利用它能夠很好的解決Web開發(fā)中遇到的各種問題。在項(xiàng)目開發(fā)的過程中,只要能解除對(duì)象之間的耦合性就可以采用,框架作為實(shí)現(xiàn)模式的一種載體,同一模式可適用于各種不同框架。由此可見,框架既能有效的約束開發(fā)人員的開發(fā)方式,也能強(qiáng)迫開發(fā)人員按照一種更優(yōu)架構(gòu)的方式來設(shè)計(jì)和開發(fā)應(yīng)用程序。
[1] 許輝.基于ASP.NETMVC框架的Web設(shè)計(jì)[D].計(jì)算機(jī)光盤軟件與應(yīng)用,2014(06)。
[2] 況蔚林.ASP.NETMVC開發(fā)模式研究.黑龍江科技信息,2015(21)。