標籤:
ASP.NET 是一個開發架構,用於通過 HTML、CSS、JavaScript 以及伺服器指令碼來構建網頁和網站。ASP.NET 支援三種開發模式:Web Pages、MVC (Model View Controller) 以及 Web Form。下面首先區別比較一下Web Form 和MVC這兩種設計模式,接著進行基礎知識的講解。
一、兩種設計模式的區別
1.WebFrom 這種設計模式的實現方式有兩種
(1)aspx前端頁面+伺服器控制項(為控制項設定事件回應程式法)
(2)aspx前端頁面+非同步+ashx一般處理常式()
兩種實現方式各有利弊,在此不累述
總的來說WebFrom 這種設計模式將程式的處理分為前台與後台,前台頁面為通過 HTML、CSS、JavaScript 以及伺服器指令碼構建的網頁,為aspx檔案。後台代碼為aspx.cs檔案或一般處理常式,是對應於我們前台頁面的代碼(由此可知兩者之間的耦合性比較強,不利於後期軟體變更、維護)。對於初學WebForm的人員,我們常做的就是拖拉伺服器控制項,之後在為他們添加幕後處理代碼。
2.MVC設計模式的實現方式是將前台的呈現與背景控制分離開來(較WebForm有了改進,極大降低了前台和背景耦合性,有利於後期軟體變更、維護),劃分為了三個部分:Controller、View、Model 下面為大家詳細講解一下
Controller:控制器。在Contrller檔案夾添加的以Controller結尾的類就是控制器,它的每個方法就是一個Action。它的職責是從Model中擷取資料,並將資料交給View,它是個指揮家的角色,它並不控制View的顯示邏輯,只是將Model的資料交給View,而具體的怎樣展示資料那是View的職責,所以Controller跟View是一個弱耦合的狀態,而Controller可以任意指定具體的View進行渲染,達到了UI層的代碼和實體良好的分離。
View:視圖.負責資料的展示,當然這個視圖代碼的編寫應該是更接近純淨的Html的,而View層代碼的書寫又直接跟視圖引擎解析的規則有關(在為Action添加視圖時會有一個選項,是選擇Razor還是aspx),Razor的文法跟webFrom視圖引擎的文法截然不同
Model:很多人把Model理解成領域模型,而MVC本身是一個表現模式,它是更傾向於UI層的一個架構,所以一般我們指定的Model在使用時一般作為ViewModel來用。Model層進行資料庫資料的存取,可以使用EF等Entity Framework進行操作。
3.程式的調試
WebFrom:當我們偵錯工具時請求的Url是具體的頁面,我們可以進行某個頁面是首頁之類的設定
MVC:當我們偵錯工具時請求的Url是某個控制器下面的具體的Action,可以通過修改預設路由進行設定
WebForm、MVC這兩種設計模式的比較到此結束,也許兩者之間還有其他的區別,由於本人也是初學,對此不是很清楚,以後再補充
二、MVC設計模式基礎知識
MVC 設計模式總的商務程序如所示:
從上面的處理模型可以看出 使用者請求的是一個控制器下面的具體的Action。用戶端發送一個Http請求,首先被我們的IIS捕獲到,然後根據Url請求的格式,最終交給我們的Route組件,然後它負責解析出我們的Url具體請求的是哪個Controller下的哪個Action。然後MVC經過處理調用我們的Action執行。在Action中我們一般會從業務的Model層取出資料然後將傳輸層的資料轉換成ViewModel再交給View的視圖引擎渲染,最終產生Html的位元組流寫回用戶端。
Routing的作用:擷取到View傳過來的Url請求,並解析Url請求中Controller和Action以及資料,然後將識別出來的資料傳遞給Controller的Action(Controller的方法)。
public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); routes.MapRoute( "Default", // Route name "{controller}/{action}/{id}", // URL with parameters// 設定Url的格式,我們也可以自訂 new { controller = "Ajax", action = "Index", id = UrlParameter.Optional } // Parameter defaults //預設請求的是Ajax控制器下面的Index方法 ); //也可以根據需要修改 }
上面講解了一些MVC的基礎知識,下面會基於MVC進行一些具體項目的練習。
MVC學習系列-基礎瞭解