ASP.Net MVC與WebForm的區別

iDotNetSpace發表於2009-10-23

這裡寫圖片描述


WebForm網站和MVC網站執行機制的區別

MVC相對於WebForm來說更難學習,但效能優於WebForm,比較適合大型專案,開發成本較高,但耦合度低,易於維護,沒有太多的現成控制元件,開發效率較低。對WebForm有基礎的人反而不太容易學MVC。

一、MVC相對於WebForm的變化

1 ,使用URL Routing技術:Web程式的URL不再是指向具體的物理頁面.aspx,而是指向某個Controller的某個方法。一個典型的MVC架構的程式,其URL可能如下所示:

http://www.mysite.com/Customer/Index

使用該MVC架構的程式其URL不必有副檔名。上面這個URL中的Customer即為Controller的名字。而IndexCustomer定義的一個方法名。

2,Web程式的介面.aspx不再使用伺服器端的Form:

<asp: form runat="server"></form>

那麼與伺服器端的Form相關的Postback以及頁面生命週期的事件也不存在了。

3,頁面中不再有View State。MVC下將不能使用View State來儲存程式狀態資訊。

4,不再提供依賴於伺服器端Form的伺服器控制元件事件,開發人員熟悉的Button_Clicked事件在MVC下將不再需要。

二、WebForm網站和MVC網站執行機制的區別

①WebForm網站的執行機制

比如說我們現在要訪問一個WebForm站點:www.google.com.hk/Default.aspx(僅僅是示例)。我們的瀏覽器和伺服器都是做了哪些動作呢?

1)首先瀏覽器會向目的伺服器傳送請求報文。

配置過IIS的都知道,網站掛載在伺服器上,我們是通過訪問虛擬目錄的方式訪問網站的。這時候目的主機的IIS接收的是訪問該虛擬目錄下Default.aspx檔案的請求;(當然這也是一個非常複雜的過程,包括請求DNS伺服器,找到目的主機IP,根據IP地址訪問目的主機。複雜的網路過程就不敘述,有興趣的自己找資料學習);

2)伺服器端的IIS軟體接收到請求後,把請求交給.NET FramWork進行處理;

3).NET FramWork會建立Default_aspx類的物件,也就是我們所說的頁面物件。(在WebFrom網站建立完,並且編譯後Default.aspx會被編譯成Default_aspx類)

到現在的整個過程都還是Http請求,IIS的內部機制會去實現一個IHttphandler的介面,其中該介面實現一個ProcessRequest方法

MSDN是這樣解釋的
這裡寫圖片描述

ProcessRequest()方法會去呼叫對應頁面的Page_Load() 方法

protected void Page_Load(object sender, EventArgs e)
{
     //處理的業務邏輯或者是訪問資料庫的程式碼
     //要輸出的Html或者其它內容
}

4)返回給瀏覽器(包括Html,CSS,Js等等)

流程示意圖如下:
這裡寫圖片描述

②MVC網站的執行機制

還比如說我們現在要訪問一個MVC站點:www.google.com.hk/FirstPage/Default(僅僅是示例)。我們的瀏覽器和伺服器又做了哪些動作呢?

1)瀏覽器向伺服器傳送Request請求報文(FirstPage/Default

2)伺服器端的IIS相應Request請求

3).NET FramWork根據路由配置,解析URL,並建立FirstPage類的物件,並呼叫相應的Default方法

public ActionResult Default()
{
  return View();//返回給檢視
}

4)然後會訪問檢視資料夾下的Default.cshtml,返回給瀏覽器(其中包括html,css,js等等)

流程的示意圖如下:

這裡寫圖片描述

這只是一個比較簡單的執行過程。其實在這過程中發生了很多事情,比如說:執行Global.asax中的Application_Start()方法來完成一些初始化的工作等等,會在以後的文章中繼續解析。

以上就是WebForm網站和MVC網站執行機制的區別。

那麼到底使用MVC的優點比WebForm到底有哪些優點呢?

①最重要的就是.NET程式設計師在開發的時候再也不會使用那些被很多人詬病的微軟封裝的控制元件了。

②MVC設計模式降低了模型(Model,業務和資料)和檢視的耦合關係。包括我們在開發WebForm網站使用三層架構的思想也是為了降低資料和檢視的耦合等;

③可以複用檢視,也就是說同樣的資料可以使用不同的檢視以不同的圖示展示出來。

相關文章