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