MVC與WebForm的區別

2021-07-26 02:56:30 字數 2548 閱讀 6371

原文:

筆記;1. webform優點

缺點:2. mvc 優點:

2015-10-28 22:03

518人閱讀收藏 

舉報

自己的理解

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

一、mvc相對於webform的變化

1. 使用url routing技術:web程式的url不再是指向具體的物理頁面.aspx,而是指向某個controller的某個方法。乙個典型的mvc架構的程式,其url可能如下所示:

使用該mvc架構的程式其url不必有副檔名。上面這個url中的customer即為controller的名字。而index是customer定義的乙個方法名。

2. web程式的介面.aspx不再使用伺服器端的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的介面,其中該介面實現乙個processrequestfang方法

msdn是這樣解釋的

該processrequest()方法會去呼叫對應頁面的page_load() 方法

1

protected

void page_load(object

sender, eventargs e)

2

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方法

1

public

actionresult default()

2

4)然後會訪問視**件夾下的default.cshtml,返回給瀏覽器(其中包括html,css,js等等)流程的示意圖如下:

以上就是webform**和mvc**執行機制的區別。

那麼到底使用mvc的優點比webform到底有哪些優點呢?

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

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

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

MVC與WebForm最大的區別

分析了mvc的工作工程,就可以對比其與webform的區別了。我們知道,mvc模式的業務被放置到controller中去執行,而aspx頁面只負責顯示。那麼在mvc中的業務實際執行時間被提前到了httpmolde中,而webform的請求只在httphandler容器中被執行。也就是說mvc中con...

MVC與WebForm最大的區別

使用asp.net mvc框架,建立預設專案,第一直觀感覺就是位址都是rewrite過的。對原始碼和配置檔案稍加分析不難看出,mvc使用了httpmodules來攔截位址請求,具體用到了system.web.routing類庫 mvc2中,mvc1怎麼用的忘記了。而這部分類庫被包裝在.net fra...

MVC與WebForm最大的區別

分析了mvc的工作工程,就可以對比其與webform的區別了。我們知道,mvc模式的業務被放置到controller中去執行,而aspx頁面只負責顯示。那麼在mvc中的業務實際執行時間被提前到了httpmolde中,而webform的請求只在httphandler容器中被執行。也就是說mvc中con...