ASP.NET Webform和ASP.NET MVC的區別


最近公司招.NET開發,面試了很多人,都說自己做過ASP.NET Webform和MVC的開發,於是問:“ASP.NET和ASP.NET MVC的區別在哪?”沒有一個人的回答令人滿意。這里就再老生常談,啰嗦幾句。

ASP.NET WebForm

ASP.NET Webform提供了一個類似於winform的事件響應GUI模型(event-driven GUI),隱藏了HTTP、HTML、JavaScript等細節,將用戶界面構建成一個服務器端的樹結構控件(Control),每個控件通過ViewState保持自己的狀態,並自動把客戶端的js事件和服務器端的事件聯系起來。這種做法使得開發WinForm和WebForm程序具有相近的開發體驗,填平WinForm開發(有狀態、面向對象的)和WebForm開發(無狀態、面向HTML的)之間的鴻溝。

這種設計在大型網站開發的時候,暴露出一系列弱點:

  1. ViewState可能過大。訪問量非常大的情況下,viewstate占用的流量相當可觀,這樣直接影響頁面傳輸速度。
  2. Page Life Cycle:過於復雜。比如控件的Init事件在Page的Init事件之前執行,而Load事件是控件后執行。事件處理的事件
  3. 缺乏對HTML的控制:一般每個控件負責自己的HTML輸出,開發人員無法修改輸出的HTML結構,除非自己寫控件。而且HTML元素的ID比較復雜,也不便於js訪問。
  4. 界面設計和邏輯開發的關注分離做的不好:Webform開發是一個頁面對應一個code-behind class,原本的目的是將展示和邏輯分離。但是在實際開發的時候,面對某些需求,還是經常會在class中寫一些控制界面展示的代碼。
  5. 對測試的支持不好:頁面和code-behind class綁定在一起,無法單獨對邏輯進行測試;不支持單元測試。

ASP.NET MVC

ASP.NET MVC的優點如下:

  1. 采用MVC架構:分離了關注點,比如開發Controller的時候,只需關注如何處理交互,從request中獲得什么數據,業務邏輯交給Model處理,還需要把哪些數據傳給頁面用於展示,如何展示交給View處理。
  2. 更好的擴展性:ASP.NET MVC框架由一些列獨立的組件構成,你可以輕松替換,如路由系統、the View Engine、the controller factory或者其它框架的組件。
  3. 更好的可測性:關注點的分離另外一個好處就是更好的可測性。
  4. 能夠完全控制輸出的HTML。
  5. 強大的路由功能。

參考

  1. Pro ASP.NET MVC Framework
    1. http://www.asp.net/mvc
    2. http://aspnetwebstack.codeplex.com/
  2. ASP.NET Web Forms Weaknesses
  3. MVP模式
  4. Monorails
    1. http://yok.cnblogs.com/archive/2005/11/05/269383.html
    2. http://www.cnblogs.com/firstyi/category/108880.html
  5. Ruby on Rails
    1. http://www.cnblogs.com/hardrock/archive/2006/08/18/480668.html
    2. http://www.cnblogs.com/dahuzizyd/category/97947.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM