標籤:類型 strip ima 指定 項目 進階 快速 公眾 業務
WebForm的理解
1、 WebForm概念
ASP.NETWebform提供了一個類似於Winform的事件響應GUI模型(event-drivenGUI),隱藏了HTTP、HTML、JavaScript等細節,將使用者介面構建成一個伺服器端的樹結構控制項(Control),每個控制項通過ViewState保持自己的狀態,並自動把用戶端的js事件和伺服器端的事件聯絡起來。這種做法使得開發WinForm和WebForm程式具有相近的開發體驗,填平WinForm開發(有狀態、物件導向的)和WebForm開發(無狀態、面向HTML的)之間的鴻溝。
2、WebForm 請求流程
比如訪問 http://www.qidian.com/Default.aspx
1、Http請求(物理地址:Default.aspx)
①發送請求: 瀏覽器向伺服器發送請求報文,此時由IIS虛擬目錄接收。(通過配置過IIS,把網站掛載在伺服器上,通過訪問虛擬目錄的方式訪問網站的。)
②轉交請求: 伺服器端的IIS軟體接收到請求後,把請求交給.NET FrameWork進行處理。
③建立頁面類對象:.NET FrameWork根據請求的地址index.aspx,會建立對應的index_aspx類的對象(頁面對象)。
IIS的內部機制:
實現一個IHttphandler的介面
該介面實現一個ProcessRequest方法
該方法會調用對應頁面的Page_load方法
處理的商務邏輯或者是訪問資料庫的代碼
要輸出的Html或者其它內容
2、返回給瀏覽器
①轉交回複: 通過IIS傳輸出給瀏覽器,要輸出的html元素或其他內容(html+js+css等)
②解析為圖形介面:瀏覽器解析html代碼,並翻譯為圖形化介面
2、 WebForm的優點:
1. 有大量的伺服器控制項支援,比如:GridView、Repeater等控制項可以方便的進行資料繫結,從而減少的大量代碼的編寫。
2. 學習成本低,由於微軟封裝的比較深,造成深入學習的難度加大。
3. 基於事件驅動編程,如:click事件等,aspx和cs檔案分離,即顯示邏輯和處理邏輯分離。
4. 支援檢視狀態,每個控制項以“隱藏欄位”的形式存在當前表單頁面未達到“有狀態”,即ViewState。
3、 WebForm的缺點
1. 由於使用的ViewState會增加頁面的負擔,造成效能不是很高。
2. 代碼重用性不高,缺少對並行開發的支援,
3. 因為採用code-behind 代碼後植技術,使aspx頁面與cs緊密耦合度太高。
4. 對Seo不友好,因為URL指定具體的aspx頁面。
5. 因為緊密耦合度太高、使用大量的事件處理函數,不利於單元測試。
二、 MVC的理解
1、 MVC的概念
Asp.netMvc架構模式是一種 低耦合、可測試的web應用程式架構,它是基於CLR和成熟的MVC架構構建的。ASP.NET MVC不支援ViewState和伺服器控制項。
2、 MVC的請求流程
比如訪問:http://www.google.com.hk/FirstPage/Default
1、Http請求(邏輯地址:FirstPage/Default)
①發送請求(FirstPage/Default)
②轉交請求(同上)
③建立類對象+方法
.NET FrameWork根據路由配置,解析URL,並建立news類的對象,並調用對象的index方法。通過View方法載入視圖,然後訪問視圖檔案夾下的index.cshtml
2、返回給瀏覽器
3、 MVC的優點
1. 架構降低了程式間的耦合性。
2. 不支援ViewState,頁面更加乾淨,可以提升程式的效能。
3. 支援並行開發,可擴充性好,繼承了asp.net的特性,表單驗證、緩衝、會話等。
4. 由於程式耦合度低,可以比較順利的進行單元測試。
5. 通過修改路由規則,可以控制產生自訂的url,因此控制產生seo友好的url將更加容易。
6. 強型別view實現,更安全,更高效。
4、 MVC的缺點
需要有一定的html、css、js、jquery前端技術,也就增加了一些學習的成本。
MVC和WebForm的選擇情境
新開發的專案提案採用MVC。
想要快速開發的中小型項目可以選擇WebForm。
比較關注單元測試、效能、SEO、代碼重用性的話建議採用MVC。
最後結語
MVC和WebForm都有自己的優缺點,目前兩種技術都存在,證明都有自己的價值,雖然現在MVC應用越來越廣發,我們不能一味的否定WebForm。一個進階程式員用WebForm實現的網站效能並不一定比初級程式員用MVC實現的網站效能差,最重要的還是努力提升自己的技術能力才是王道!
歡迎關注我的公眾號:DoNet技術分享平台
關於ASP.NET WebForm與ASP.NET MVC的比較