張治平
摘 要 MVC架構(gòu)是目前ASP.NET網(wǎng)站系統(tǒng)開發(fā)流程的一種流行的模式,一種開發(fā)架構(gòu),一種開發(fā)的概念,同時(shí)也是一種設(shè)計(jì)樣式。軟件開發(fā)人員通過(guò)這種模式來(lái)提高軟件開發(fā)效率,同時(shí)提高軟件質(zhì)量和可維護(hù)性。
【關(guān)鍵詞】MVC模式 ASP.NET站點(diǎn) 開發(fā)效率 MVC應(yīng)用
1 對(duì)MVC架構(gòu)開發(fā)模式的認(rèn)識(shí)
MVC是Model-View-Controller-三個(gè)英文字母的縮寫,直譯為“模型-視圖-控制器”,是一種軟件開發(fā)架構(gòu)或者稱模式。在MVC開發(fā)模式中,將軟件中交互性的應(yīng)用分解為Model、View、Controller三個(gè)相對(duì)獨(dú)立的組件,通過(guò)彼此之間提供的接口,實(shí)現(xiàn)三者之間的通信與同步。
(1)Model直譯為模型,更加準(zhǔn)確表述可稱為“數(shù)據(jù)模型”,Model主要負(fù)責(zé)所有與數(shù)據(jù)有關(guān)的操作任務(wù)。具體有定義數(shù)據(jù)結(jié)構(gòu),負(fù)責(zé)與數(shù)據(jù)庫(kù)進(jìn)行交互,從數(shù)據(jù)庫(kù)中獲取信息記錄,將信息保存到數(shù)據(jù)庫(kù)里面,數(shù)據(jù)信息格式是否合法進(jìn)行判斷,數(shù)據(jù)信息加工、處理等,基本上所有與數(shù)據(jù)有關(guān)的任務(wù),都應(yīng)該在Model層進(jìn)行定義或者編寫代碼,比如:數(shù)據(jù)添加、更新、查詢、刪除等。
在ASP.NET中,Model可看作成一個(gè)命名空間(Namespace),它定義了一些類型(Type)或(Class)來(lái)負(fù)責(zé)所有與數(shù)據(jù)有關(guān)的操作,在Visual Studio提供了常見的相關(guān)技術(shù)包括ADO.NET實(shí)體數(shù)據(jù)類型、LINQ to SQL類等。
(2)VIEW是頁(yè)面視圖,主要提供跟用戶交互有關(guān)的接口或者界面,即用戶輸入輸出相關(guān)操作的界面。輸入操作是提供界面將用戶輸入的數(shù)據(jù)傳回服務(wù)器,輸出操作是將數(shù)據(jù)顯示界面上呈現(xiàn)給用戶。
(3)Controller是控制器,實(shí)現(xiàn)用戶交互與輸入,也是業(yè)務(wù)邏輯的處理。具體作用有控制程序與用戶交互的渠道,控制軟件系統(tǒng)執(zhí)行的流程,實(shí)現(xiàn)從Model層中讀取數(shù)據(jù),控制將輸出信息在哪個(gè)View上呈現(xiàn),并在發(fā)生異常錯(cuò)誤時(shí)選擇相關(guān)的界面進(jìn)行響應(yīng),總的來(lái)說(shuō)在軟件中起到至關(guān)重要的作用。
2 利用MVC架構(gòu)進(jìn)行ASP.Net站點(diǎn)開發(fā)的意義
在1979年MVC被提出,并應(yīng)用于當(dāng)時(shí)熱門的Smalltalk程序設(shè)計(jì)語(yǔ)言,它的產(chǎn)生主要目的是為了使得軟件開發(fā)過(guò)程更加簡(jiǎn)單,這種MVC模式將業(yè)務(wù)邏輯層與數(shù)據(jù)表示層分離出來(lái),使得程序編寫模塊化,也將提高程序的可維護(hù)性。
2.1 將業(yè)務(wù)邏輯與用戶界面邏輯分離,降低了站點(diǎn)開發(fā)的復(fù)雜度
基于Web的應(yīng)用程序中,一般用戶界面邏輯需求的修改比業(yè)務(wù)邏輯頻繁。當(dāng)用戶界面做好之后,用戶可能會(huì)提出一些新的修改要求,這些新的需求可能導(dǎo)致修改現(xiàn)有的頁(yè)面布局。利用MVC架構(gòu),可以做到對(duì)界面修改(View更改),可達(dá)到基本不會(huì)影響數(shù)據(jù)和業(yè)務(wù)邏輯,簡(jiǎn)化代碼編寫難度。
2.2 大大提高了程序代碼可維護(hù)性
因?yàn)槟P蚆odel是獨(dú)立的,并且與控制器Controller、視圖View相對(duì)分離,當(dāng)數(shù)據(jù)層和業(yè)務(wù)規(guī)則有變動(dòng)時(shí)修改起來(lái)也很容易。比如原來(lái)系統(tǒng)使用的是MySQL,現(xiàn)在需要將數(shù)據(jù)庫(kù)從MySQL遷移到到SQL Server數(shù)據(jù)庫(kù)中,只需改變數(shù)據(jù)模型Model即可。只要Model模型配置正確,無(wú)論數(shù)據(jù)源指向哪里,視圖都能正確地顯示結(jié)果。
2.3 提高代碼重用率
多個(gè)視圖可共享一個(gè)數(shù)據(jù)模型,比如業(yè)務(wù)邏輯層需要用到用戶信息查詢的地址,直接調(diào)用Model中的方法即可。
2.4 提高開發(fā)效率
正所謂“工欲善其事,比先利其器”,在ASP.NET MVC的最大優(yōu)點(diǎn)是可以通過(guò)Visual Studio進(jìn)行軟件開發(fā),而且ASP.NET MVC也支持加載插件功能,通過(guò)引用插件可以大幅度提高開發(fā)人員的編碼效率。采用MVC結(jié)構(gòu)+代碼自動(dòng)生成器的技術(shù)架構(gòu),可大大減少程序員編碼工作量。
2.5 讓團(tuán)隊(duì)開發(fā)更加分工、更加好合作,有利于開發(fā)出高質(zhì)量的軟件
大部分?jǐn)?shù)據(jù)模型(Model)、存儲(chǔ)過(guò)程等都通過(guò)使用工具自動(dòng)生成;控制器(Controller)性能要比較穩(wěn)定,由于它是控制系統(tǒng)業(yè)務(wù)邏輯關(guān)系,一般這個(gè)部分由有經(jīng)驗(yàn)的編程技術(shù)人員完成;視圖(View)一般由系統(tǒng)分析人員、站點(diǎn)美工去設(shè)計(jì)完成。
3 MVC架構(gòu)在開發(fā)ASP.NET站點(diǎn)開發(fā)中的實(shí)現(xiàn)方式
Asp.net為Web站點(diǎn)開發(fā)人員提供了MVC架構(gòu)開發(fā)架構(gòu)的平臺(tái),顛覆了傳統(tǒng)ASP程序開發(fā)的模式:程序業(yè)務(wù)邏輯與Web界面的Html元素混雜在一起,提高了程序開發(fā)效率和可維護(hù)性。
3.1 View是Asp.net程序的交互界面
在Asp.net程序中,用戶借助View來(lái)實(shí)現(xiàn)對(duì)應(yīng)用程序的操作,一個(gè)Web頁(yè)面可以由一個(gè)或者多個(gè)View組成,復(fù)雜Web頁(yè)面呈現(xiàn)的內(nèi)容可以來(lái)自多個(gè)數(shù)據(jù)源,視圖在ASP.NET站點(diǎn)中對(duì)應(yīng)地保存為相應(yīng)的.aspx頁(yè)面。網(wǎng)頁(yè)界面編輯人員、界面美工在設(shè)計(jì)布局和系統(tǒng)界面時(shí)就對(duì)應(yīng)處理相應(yīng)的.aspx頁(yè)面即可。
3.2 Model對(duì)象程序的數(shù)據(jù)模型,也稱作實(shí)體或模型
程序的數(shù)據(jù)一般以文件的形式保存在磁盤中,這樣的數(shù)據(jù)文件稱為數(shù)據(jù)庫(kù),Model是數(shù)據(jù)庫(kù)中數(shù)據(jù)的抽象,Asp.net站點(diǎn)的數(shù)據(jù)庫(kù)無(wú)論采用哪種形式存儲(chǔ),對(duì)數(shù)據(jù)的操作都可以抽象為對(duì)Model的操作。在MVC模式中,對(duì)數(shù)據(jù)模型的操作可以借助Asp.net的EntityBase類、Entity類實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)的抽象,完成對(duì)數(shù)據(jù)庫(kù)相關(guān)的操縱,并且,數(shù)據(jù)模型中相應(yīng)的數(shù)據(jù)信息操作可以由Visual Studio自動(dòng)代碼生成工具實(shí)現(xiàn)自動(dòng)生成。
3.3 Controller控制器在Asp.net站點(diǎn)中操作應(yīng)用系統(tǒng)的業(yè)務(wù)邏輯,介于Model與View的中間層
用戶借助View(即.aspx頁(yè)面)接收請(qǐng)求,將操作指令發(fā)送給Controller,在Controller文件中,根據(jù)編程人員設(shè)計(jì)的軟件邏輯以及Model定義的數(shù)據(jù)執(zhí)行完畢對(duì)應(yīng)的代碼之后把結(jié)果返回給View以呈現(xiàn)。在MVC中,一個(gè)Controller對(duì)應(yīng)于保存業(yè)務(wù)邏輯控制代碼的aspx.cs文件,一個(gè)Controller文件中可以包含多個(gè)View顯示的控制代碼。
4 結(jié)束語(yǔ)
MVC是一種目前流行軟件開發(fā)架構(gòu),不僅廣泛應(yīng)用于Asp.net程序開發(fā),并在使用Php、Java等語(yǔ)言開發(fā)軟件系統(tǒng)時(shí),程序員也會(huì)首選MVC開發(fā)模式。
作者單位
順德胡錦超職業(yè)技術(shù)學(xué)校 廣東省佛山市 528305