[ASP.NET MVC 小牛之路]01 - 理解MVC模式
特別提醒:本文編寫時(shí)間是 2013 年,請(qǐng)根據(jù)目前 .NET 發(fā)展接收你所需的知識(shí)點(diǎn)。
?
PS:MVC出來很久了,工作上一直沒機(jī)會(huì)用。出于興趣,工作之余我將展開對(duì)MVC的深入學(xué)習(xí),通過博文來記錄所學(xué)所得,并希望能得到各位園友的斧正。
本文目錄
理解一般意義上的MVC模式
MVC模式(Model-View-Controller)是軟件工程中的一種軟件架構(gòu)模式,把軟件系統(tǒng)分為以下三個(gè)基本部分:
- 模型(Model):模型用于封裝與應(yīng)用程序的業(yè)務(wù)邏輯相關(guān)的數(shù)據(jù)以及對(duì)數(shù)據(jù)的處理方法。“模型”有對(duì)數(shù)據(jù)直接訪問的權(quán)力,例如對(duì)數(shù)據(jù)庫(kù)的訪問。“模型”不依賴“視圖”和“控制器”,也就是說,模型不關(guān)心它會(huì)被如何顯示或是如何被操作。
- 視圖(View):視圖能夠?qū)崿F(xiàn)數(shù)據(jù)有目的的顯示。在視圖中一般沒有程序上的邏輯。
- 控制器(Controller)?:控制器起到不同層面間的組織作用,用于控制應(yīng)用程序的流程。它處理事件并作出響應(yīng)。“事件”包括用戶的行為和數(shù)據(jù)模型上的改變。
上面的定文來自維基百科。根據(jù)上面的定文和我個(gè)人的理解,我畫了下面這樣一張表示MVC各部分關(guān)系的圖:
注意,不同的平臺(tái)和不同的語言框架對(duì)MVC的定義各有不同,并沒有一個(gè)明確的定義。但大體上,MVC模式中的每個(gè)部分是分工明確、界定清晰的。操作數(shù)據(jù)的邏輯只存在于模型中,呈現(xiàn)數(shù)據(jù)的邏輯只存在于視圖中,處理用戶的請(qǐng)求和輸入只存在于控制器中。不管應(yīng)用程序有多大、處于哪段生命周期,這種清晰的關(guān)注點(diǎn)分離(separation of concerns)的MVC模式讓我們的應(yīng)用程序更容易維護(hù)和擴(kuò)展。
理解領(lǐng)域模型
領(lǐng)域模型(Domain Model)?是對(duì)領(lǐng)域內(nèi)的概念類或現(xiàn)實(shí)世界中對(duì)象的可視化表示。又稱概念模型、領(lǐng)域?qū)ο竽P汀I(yè)務(wù)對(duì)象模型。它專注于分析問題領(lǐng)域本身,發(fā)掘重要的業(yè)務(wù)領(lǐng)域概念,并建立業(yè)務(wù)領(lǐng)域概念之間的關(guān)系。 領(lǐng)域模型是描述業(yè)務(wù)用例實(shí)現(xiàn)的對(duì)象模型,它是對(duì)業(yè)務(wù)角色和業(yè)務(wù)實(shí)體之間應(yīng)該如何聯(lián)系和協(xié)作以執(zhí)行業(yè)務(wù)的一種抽象。
對(duì)于MVC應(yīng)用程序,領(lǐng)域模型是一個(gè)非常重要的部分。在某種行業(yè)內(nèi),我們根據(jù)現(xiàn)實(shí)世界的實(shí)體、相關(guān)的操作和規(guī)則來創(chuàng)建模型(Model)。對(duì)于C#程序來說,領(lǐng)域模型就是一組封裝現(xiàn)實(shí)世界對(duì)象的C#類型(類、結(jié)構(gòu)等);領(lǐng)域內(nèi)對(duì)對(duì)象的一些操作(或者叫處理),則是定義在C#類型中的方法(Method);而領(lǐng)域內(nèi)對(duì)對(duì)象操作的一些規(guī)則就是方法內(nèi)部的邏輯處理,比如C#中的屬性讀寫器的get和set方法對(duì)讀寫類成員的控制。舉個(gè)例子:
比如銀行這個(gè)領(lǐng)域,個(gè)人的“銀行帳戶”可以建成一個(gè)模型。每個(gè)賬戶都有“銀行卡消費(fèi)”這項(xiàng)操作,即銀行賬戶模型下的一個(gè)方法。“不能透支消費(fèi)”是對(duì)這個(gè)帳戶使用銀行卡的約束規(guī)則,這個(gè)規(guī)則就是定義在銀行卡消費(fèi)方法內(nèi)部的邏輯處理。
上面說的雖然有點(diǎn)抽象,但還是很容易理解的。而我對(duì)領(lǐng)域模型的理解只能到這里了,朋友們好好體會(huì)吧。總之,在MVC應(yīng)用程序中,我們要有這樣一個(gè)概念:要通過Model操作數(shù)據(jù),或添加一項(xiàng)操作,或給某項(xiàng)操作添加、改變一個(gè)規(guī)則,這些都是在改變應(yīng)用程序的領(lǐng)域模型。
理解ASP.NET中的MVC
概括的講ASP.NET MVC有如下特點(diǎn):
在ASP.NET MVC中,控制器通常是繼承System.Web.Mvc.Controller的類。控制器中類的每個(gè)公共方法被稱為Action方法。ASP.NET路由系統(tǒng)內(nèi)部根據(jù)請(qǐng)求的URL和路由配置調(diào)用對(duì)應(yīng)的Action方法,完成領(lǐng)域模型的操作后,再選擇一個(gè)視圖呈現(xiàn)給客戶端。下圖顯示了ASP.NET MVC中Controller、Model和View之間的關(guān)系:
另外,ASP.NET MVC框架可以使用任何被.NET支持的數(shù)據(jù)庫(kù)、ORM框架和其他工具。
對(duì)于初學(xué)者,我覺得對(duì)ASP.NET MVC的概念了解到這就差不多了。如果想更好的理解ASP.NET中 MVC的概念建議訪問MSDN文檔。
如果你是新手,為了幫助理解,建議你到網(wǎng)上找?guī)讉€(gè)幾個(gè)簡(jiǎn)單的Demo做做。
?
參考:《Pro ASP.NET MVC 3 Framework》
總結(jié)
以上是生活随笔為你收集整理的[ASP.NET MVC 小牛之路]01 - 理解MVC模式的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 懂车帝如何显示车主
- 下一篇: asp.net ajax控件工具集 Au