MVC介紹



翻譯來源:http://www.codeproject.com/Tips/669195/MVC-Introduction

MVC介紹

        在這篇技術文章中,我們將介紹ASP.NET MVC的設計模式。但是在此之前,我們先看一下ASP.NET MVC的發佈歷史。

ASP.NET MVC版本歷史

        ASP.NET是專門爲創建網站而設計的。它就像網頁一樣是web應用程序開發框架。

MVC框架

        MVC不會替代掉網頁表單。我們可以用MVC框架也可以使用ASP.NET網頁表單的形式來創建我們的網絡應用程序。MVC對於基礎的ASP.NET網頁表單模型來說僅僅是一個可替換的結構。這種設計方式將我們的網站劃分爲3個層次,這大大加強了我們對我們的網絡應用程序的控制力度。

        

  • Model(模型層):Model象徵着業務邏輯和數據。它包含屬性和應用程序邏輯。它和數據庫進行“交流”即向數據庫獲取數據並儲存數據。模型層可能是一個LINQ to SQL框架【注1】或者實體框架。

  • View(視圖):View代表程序的展示層,它用於爲用戶提供用戶界面。基本上,它是一系列的網頁或者用戶控件[B1] 。在View上沒有對用戶操作的處理和輸入邏輯它們是在Controller上進行的。這種分離使得程序更加便於測試。

  • Controller(控制器):Http請求傳遞到個人的控制器然後控制器調用Model並選擇一個View用於展現結果。Controller表現爲處於ModelView之間的一個協調者。

 

正因爲MVC被分爲3個層次,所以它是一個弱耦合的開發框架。這種弱耦合可以降低網絡應用程序的複雜程度並便於維護和提供更好的測試驅動開發,這正是ASP.NET MVC框架的目的之一:提高程序的可測試性。

 

一個MVC應用程序和web表單有不同的體系、結構和頁面處理方式。在一個ASP.NET程序中,request是由ASP.NET處理的,即ASP.NET調用界面、執行事件然後返回response。但是在MVC模式中,我們不得不寫Models,創建Views,編寫Controllers。在MVC中,requests是由UrlRoutingModule HttpModule類【注2】處理的。這個類轉換request,並根據我們提供的配置選擇一個路徑(我們之後會討論尋址)。然後request會傳遞到我們編寫的其中一個Controller。然後就輪到Controller通過Module連接數據庫並提供response將指定的Views變爲用戶界面。這樣子,我們能完全掌控requestresponse。所以,在MVC中,沒有什麼東西能向我們隱藏。在MVC框架中我們不得不寫更多的代碼畢竟沒有什麼東西是自動的嘛。

ASP.NETMVC Request 生命週期

MVC使用路徑來處理,因此我們不得不使用System.Web.Routing(路徑搜索引擎)命名域。正如我們之前討論的那樣,在MVC中,requests是由UrlRoutingModule HttpModule類處理的。UrlRoutingModule接收請求並在RootCollection Table中尋找一個路徑。我們使用RegisterRoutes方法(被稱爲程序啓動事件)在Global asax file(全局文件)【注3】中的Collection添加路徑。這些路徑在程序開始時就被添加到指定的Table中,然後request被映射到其中一個路徑並創建了兩個對象----RouteData類對象表示路徑、RequestContext表示該request的內容。

 

MVCRouteHandler類處理路徑,它會創建一個MVCHandler的實例化對象並將RequesContext傳遞給處理者(即MVCHandler對象)。該處理程序實際上調用了Controller(我們所編寫的用於處理Request的控制器)並運行Controller中的處理方法。

 

Controller然後使用ControllerActionInvoker【注4】來決定運行哪個Action(在Controller中我們使用Action來處理作爲事件的代碼)。最後Action類中的方法接收用戶的輸入並使用ViewModel準備一個response

MVC特性

        我們應該用MVC框架來創建我們的網站,理由如下所示:


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章