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