傳統的ASP.NET Web Forms是一個非常好的主意,但現實需求非常復雜。隨著時間的推移,現實世界的項目暴露出Web Forms的一些不足之處:
“沉重的”視圖狀態:現實中在http請求之間維持狀態(術語叫視圖狀態)導致了服務端和客戶端巨大的數據塊來回傳遞。典型情況下這個數據塊會大到數百K字節,而且這個數據塊會在每次請求時來回傳輸,導致網站訪問者訪問速度下降,同時增加了服務器的帶寬負擔。
頁面生存周期:作為頁面生存周期的一部分,連接客戶端事件和服務端事件處理代碼的機制,有時會非常復雜和微妙。很少有開發者能夠在運行時成功操縱控件的層次結構而不發生視圖狀態錯誤,有時還會發現一些事件處理代碼在運行神秘的失敗了。
對HTML控制有限:服務端控件在客戶端將自身轉化為HTML標記,但往往并不是你想要的。在ASP.NET 4.0以前版本中,它的HTML輸出通常并不符合WEB標準,和層疊樣式表(CSS)也沒有良好的結合,而且服務端控件自動創建不可預知的、復雜的標記ID值,導致Javascript難以訪問。這些問題在在ASP.NET 4.0里有所改善,但要獲取你期望的HTML標記可能依然比較棘手。
有問題的抽象:Web Forms試圖盡可能隱藏HTML和HTTP的實現細節。當你想要實現自定義的行為時,你必須頻繁地從這種抽象里跳出來,強制你對回發事件機制實施進行逆向工程,采取一些繁瑣的方法(obtuse acts)生成你想要的HTML文本。這些抽象甚至會令極富經驗的WEB開發者感到令人沮喪的挫折。
低級的可測試性:ASP.NET的設計者壓根沒有把自動測試作為這個軟件開發平臺的必要工具。這并不奇怪,他們設計的緊密耦合的體系結構根本不合適進行單元測試,集成測試也是個問題。
ASP.NET在不斷發展。2.0版增加了一套標準應用程序組件集,可以減少你需要自己輸入的代碼量。2007年發布的AJAX版本是微軟對當時Web 2.0/AJAX瘋狂流行的響應,它支持富客戶端交互。最近發布的ASP.NET 4.0版,可以產生大部分可以預見的符合標準的HTML標記,但許多其固有的局限性依然存在。
ASP.NET MVC的主要優勢
ASP.NET在商業上取得了巨大成功,但正如前所述,其它的WEB開發平臺也在不斷向前發展。盡管微軟一直在努力把 主站蜘蛛池模板: 安丘市| 河北省| 泌阳县| 荥经县| 小金县| 沭阳县| 文水县| 微山县| 克东县| 江阴市| 茌平县| 利辛县| 镇平县| 北安市| 海晏县| 淮北市| 通榆县| 竹山县| 布尔津县| 拉萨市| 正阳县| 博白县| 淳化县| 丰都县| 米林县| 九台市| 凤阳县| 泗阳县| 嘉定区| 海林市| 阿合奇县| 喀喇| 大名县| 灵川县| 乡宁县| 松滋市| 周宁县| 五指山市| 宜良县| 余庆县| 松滋市|