MVC與WebForm最大的區別

2021-09-06 19:17:48 字數 1378 閱讀 3735

分析了mvc的工作工程,就可以對比其與webform的區別了。我們知道,mvc模式的業務被放置到controller中去執行,而aspx頁面只負責顯示。那麼在mvc中的業務實際執行時間被提前到了httpmolde中,而webform的請求只在httphandler容器中被執行。也就是說mvc中controller與view的分離是使用的asp.net請求管道隔離的,這樣的話無疑在不影響效率(一次請求,而response.redirect是二次請求)的情況下達成了**的邏輯層次的分離。

圖1 mvc工作模型

mvc工作的優點是顯然的,更加有利於理解分層邏輯,把握**的層次感。controller到aspx頁面之間的過程,已經被框架隔離。至於controller或者view頁面與model呼叫的過程,還是需要自己來把握。asp.net的mvc框架實現了controller**的單獨管理。

而看webform開發模型,則只在httphandler容器中執行,對其進行分層,在大的方面缺乏支援,而只能依靠邏輯上分離。並不是不能分離,而是由一定的侷限性。httphandler的攔截,是跟訪問字尾名有關的。當請求乙個頁面時,那就是乙個handler,而webform模型實現顯示與邏輯分離,才有的是winform的事件驅動。顯然,事件必須被註冊到頁面裡,比如button1_click這樣的**。而在button1_click執行之前,page_load方法會被執行。顯示**被寫入page_load方法中,那麼就會造成需要寫額外的廢**,比如if (!page.ispostback)這樣的判定。而在button1_click執行後需要顯示的部分,則比較難處理,寫出另乙個方法,也是必須要在button1_click裡呼叫的。替代的解決方案是使用response.redirect,在乙個aspx頁面中處理邏輯,處理完就跳轉到另外乙個顯示的頁面。這樣做的壞處是,在兩個頁面中資料很難共享,而跳轉是通過標記302來實現,因此多一次請求。而另外還可以通過server.execute,server.transfer或者context.rewritepath這樣的處理方式,則兩個頁面轉換是在伺服器端完成,可以共享資料,可以說和mvc框架的處理方式大同小異,缺點是需要手動配置這些重新定向的屬性。

從以上分析可以看出,mvc框架具有很強的優越性,而webform也不是一無是處,在簡單的應用中更加容易開發。webform也是可以實現和mvc一樣的分層方式,只是處理時需要多寫一些**而已。而我認為,在用webform開發分層遇到的最大問題是頁面與頁面之間資料的傳遞問題,而掌握好webform中使用伺服器端跳轉的應用技巧(server.execute,server.transfer或者context.rewritepath)進行開發就可以解決資料傳輸問題,用webform開發比mvc框架更容易理解,不會產生複雜的配置,也是乙個很不錯的選擇。

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...

MVC與WebForm的區別

原文 筆記 1.webform優點 缺點 2.mvc 優點 2015 10 28 22 03 518人閱讀收藏 舉報 自己的理解 mvc相對於webform來說更難學習,但效能優於webform,比較適合大型專案,開發成本較高,但耦合度低,易於維護,沒有太多的現成控制項,開發效率較低。對webfor...