Asp.net 微軟提供web開發框架或者技術。分Web Form和ASP.NET MVC。下面簡單說明各自優缺點及使用場景。html
ASP.NET Webform提供了一個相似於winform的事件響應GUI模型(event-driven GUI),隱藏了HTTP、HTML、JavaScript等細節,將用戶界面構建成一個服務器端的樹結構控件(Control),每一個控件經過ViewState保持本身的狀態,並自動把客戶端的js事件和服務器端的事件聯繫起來。這種作法使得開發WinForm和WebForm程序具備相近的開發體驗,填平WinForm開發(有狀態、面向對象的)和WebForm開發(無狀態、面向HTML的)之間的鴻溝。jquery
這種設計在大型網站開發的時候,暴露出一系列弱點:web
ViewState可能過大。訪問量很是大的狀況下,viewstate佔用的流量至關可觀,這樣直接影響頁面傳輸速度。
Page Life Cycle(頁面生命週期):過於複雜。好比控件的Init事件在Page的Init事件以前執行,而Load事件是控件後執行。事件處理的事件
缺少對HTML的控制:通常每一個控件負責本身的HTML輸出,開發人員沒法修改輸出的HTML結構,除非本身寫控件。並且HTML元素的ID比較複雜,也不便於js訪問。
界面設計和邏輯開發的關注分離作的很差:Webform開發是一個頁面對應一個code-behind class,本來的目的是將展現和邏輯分離。可是在實際開發的時候,面對某些需求,仍是常常會在class中寫一些控制界面展現的代碼。
對測試的支持很差:頁面和code-behind class綁定在一塊兒,沒法單獨對邏輯進行測試;不支持單元測試。編程
1.支持豐富的服務器控件。如:GridView和ListView能夠綁定數據,從而減小了大量的代碼編寫緩存
2.支持視圖狀態,每一個控件狀態以「隱藏域」的形式存在當前表單頁面來達到「有狀態」,這就是ViewState服務器
3.基於事件驅動編程, 如:click事件等,aspx頁面與cs文件分離,即顯示邏輯與處理邏輯分離,便於分工,美工 、編程。不像asp代碼混亂架構
4.學習成本低mvc
1.站在項目架構的角度,web form 不是很理想架構模式,儘管可使用經典的三層架構或者mvp,,但不是最優秀的。框架
2.性能 viewstate成功解決了asp問題,但一樣引入新的問題,viewstate頁面存儲勢必增長頁面大小、下降程序性能asp.net
3.代碼可重用性很差;缺乏對並行開發支持,由於aspx頁面與cs緊密耦合過高; Seo不友好,由於 url指定具體aspx頁面;不利於單元測試,由於使用大量事件處理函數
Asp.net Mvc架構模式是一種 低耦合、可測試的web應用程序框架,它是基於CLR和成熟的MVC架構構建的。ASP.NET MVC不支持ViewState和服務器控件。
ASP.NET MVC的優勢以下:
採用MVC架構:分離了關注點,好比開發Controller的時候,只需關注如何處理交互,從request中得到什麼數據,業務邏輯交給Model處理,還須要把哪些數據傳給頁面用於展現,如何展現交給View處理。
更好的擴展性:ASP.NET MVC框架由一些列獨立的組件構成,你能夠輕鬆替換,如路由系統、the View Engine、the controller factory或者其它框架的組件。
更好的可測性:關注點的分離另一個好處就是更好的可測性。
可以徹底控制輸出的HTML。
強大的路由功能
1.架構下降了程序間的耦合性,M V C,分層,目標明確
2.性能 不支持viewstate,完成html,已於結合jquery使用,提供程序性能
3.支持並行開發,可擴展性好,繼承asp.net 特性:表單驗證、緩存、會話等。
沒有viewstate和基於事件的編程,上手慢,學習成本高。
1. 快速開發------>web form
2. 單元測試、性能-------->mvc
3. 大量使用 js、jquery ------> mvc
4. 代碼重用性------->mvc