標籤:form htm 運行 部門 開發 輸出 div 後台 ack
一、為什麼說 ASP.NET WebForm 比 ASP.NET MVC 要差? WebForm 顧名思義,微軟一向主打簡單化,表單模式,拖拽控制項就能做網站了, 然而這也引發了許多 Java 和 .NET 語言好壞(效能)的爭議, 很早的時候部門老大不讓用伺服器控制項,現在才明白是為什麼。 我們不得不考慮的問題是,既然ASP.NET Web Form 如此成功且具有優勢,為什麼微軟還要推出ASP.NET MVC? 主要是因為ASP.NET Webform的效能問題。在Web應用程式中從兩方面來定義效能:
1. 回應時間: 伺服器響應請求的耗時
2. 頻寬消耗: 同時可傳輸多少資料。
回應時間 我們可以理解為什麼ASP.NET Webform比較慢,我們做了一些小的載入測試。 分別使用ASP.Net MVC和ASP.Net Webform,發現ASP.Net MVC的回應時間比Webform快了兩倍。 接下來我們在思考一個問題為什麼ASP.NET MVC的效能更好?看看下面這個樣本,簡單的UI代碼和UI的後台代碼。
通過分析我們可以得知,每一次請求都有轉換邏輯,運行並轉換伺服器控制項為HTML輸出。如果我們的頁面使用表格,樹形控制項等複雜控制項,
轉換就會變得很糟糕且非常複雜。HTML輸出也是非常複雜的。由於這些不必要的轉換從而增加了回應時間。
該問題的解決方案就是擺脫後台代碼,寫成純HTML代碼。
頻寬消耗 ASP.NET開發人員都非常熟悉Viewstates,因為它能夠自動儲存post返回的狀態,減少開發時間。 但是這種開發時間的減少會帶來巨大的消耗,Viewstate增加了頁面的大小。 在做的載入測試中,與MVC 對比,我們發現Viewstate增加了兩倍的頁面儲存。
1、HTML 消耗 現在因為我們都是後台代碼和ASP.NET web server控制項的努力,我們對於怎樣得到HTML以及如何使他們更有效沒有更好的辦法。 如下面展示的ASPX 代碼,你能確定會產生什麼樣的HTML代碼嗎? 2、後台代碼類的重用性 如果仔細觀察一些專業的ASP.NET Webform項目,你會發現後台代碼類往往都包含了大量的代碼,並且這些代碼也是非常複雜的。 而現在,後台代碼類繼承了“System.Web.UI.Page”類。但是這些類並不像普通的類一樣能夠到處複用和執行個體化。 換句話來講,在Weform類中永遠都不可能執行以下代碼中的操作:
效能差異 ASP.NET與ASP.NET MVC