1、引言
MVC3是ASP.NET架構下的MVC架構,隨MVC3同期發布的還有ASP.NET的最新引擎Razor,關於MVC3和Razor的詳細文檔參見MSDN
MSDN:MVC3 MSDN上的MVC3參考,建議快速探索
MSDN:Razor Razor的整體介紹,建議未使用過的讀者詳細瞭解下
本部落格從本文開始,將陸續推出ASP.NET MVC3的系列文章,旨在介紹ASP.NET的MVC架構,以及如何利用此架構進行高效的WEB開發。對於本文的讀者,需要瞭解ASP.NET、MVC構架、以及Entity Framework的基礎知識。好的,廢話不多說,讓我們開始ASP.NET的MVC之旅吧!
2、ASP.NET架構下的MVC應用程式的執行
階段 |
詳細資料 |
接收對應用程式的第一個請求 |
在 Global.asax 檔案中,Route 對象將添加到 RouteTable 對象中。 |
執行路由 |
UrlRoutingModule 模組使用 RouteTable 集合中第一個匹配的 Route 對象來建立 RouteData 對象,然後使用所建立的對象建立 RequestContext 對象。 |
建立 MVC 請求處理常式 |
MvcRouteHandler 對象將建立 MvcHandler 類的執行個體,並將 RequestContext 執行個體傳遞給處理常式。 |
建立控制器 |
MvcHandler 對象使用 RequestContext 執行個體標識用於建立控制器執行個體的 IControllerFactory 對象(通常是 DefaultControllerFactory 類的執行個體)。 |
執行控制器 |
MvcHandler 執行個體調用控制器的 Execute 方法。 |
叫用作業 |
對於從 ControllerBase 類繼承的控制器,與該控制器關聯的 ControllerActionInvoker 對象將決定要調用的 controller 類的操作方法,然後調用該方法。 |
執行結果 |
操作方法將接收使用者輸入,準備合適的響應資料,然後通過返回結果類型來執行結果。 可執行檔內建結果類型包括:ViewResult(呈現視圖並且是最常用的結果類型)、RedirectToRouteResult、RedirectResult、ContentResult、JsonResult、FileResult 和 EmptyResult。
|
3、開發環境
Visual Studio 2010的安裝包只包含MVC2,需要單獨安裝,建議使用http://www.asp.net/mvc/mvc3上的web installer安裝,如果使用單獨的asp.net mvc3安裝包,可能在個別步驟出現掛起的現象。
資料庫方面,為了方便使用Entity Framwork,本文使用Sql Server。配置方面不用過多關注,只需要預設配置就能夠運行本文提供的內容。
與J2EE架構下的MVC繁瑣的開發環境搭建不同,在ASP.NET下,只需要如下工具即可:
Visual Studio Web Developer Express 2010
ASP.NET MVC 3 Tools
Sql Server 2008 Express
下面的連結有asp.net網站提供的Web Developer Express+MVC3的web installer。
http://www.asp.net/mvc/mvc3
不過對於有條件的讀者,建議使用Visual Studio的完整版本。
4、協助工具輔助NuGet
NuGet是.NET平台下面向開發人員的包管理器,對於曾經掙紮在Struts、Hibernate等東西的設定檔的讀者來說,NuGet是一開發人員的福音。NuGet的使用類似於Linux下的包管理器,但也許更為簡單。對於一個項目,NuGet可以做下面這些事情:
1. 搜尋包;
2. 下載包到本地並添加到項目中(包括添加引用和dll等檔案);
3. 根據包自動設定Web項目的config檔案。
關於NuGet的更多內容,請參考codeplex上的NuGet項目:
http://nuget.codeplex.com/
這裡,我們示範如何使用NuGet在一個空MVC3項目中加入Ajax Control Toolkit,這將是一個非常簡單的過程^_^。
首先建立一個MVC3項目,選擇空模板,Project Layout1所示:
圖1.
然後,按右鍵項目中的“引用”,在快顯功能表中點擊“Manage NuGet Packages”,在搜尋方塊中鍵入要搜尋包的名字即可,2所示:
圖2.
然後點擊Install,然後,就沒有然後了,NuGet會為你完成所有的配置!
Tips:MVC3的項目模板,包括Empty的模板,會安裝如EntityFramework、JQuery等幾個常用的包,這些包都可以使用NuGet來進行管理。