熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> .NET編程 >> 正文

Web開發模式的顛覆者:ASP.NET MVC

2013-11-13 11:02:09  來源: .NET編程 

  月微軟針對ASPNET 發布的MVC框架(Preview 版本)是一個真正意義上的ASPNET MVC框架至今短短個月內此框架已經發展到Preview 版本許多國內外業界人士稱該框架為其前基於Web表單開發模式的歷史性顛覆本文站在對ASPNET MVC框架與傳統ASPNET Web表單開發模式進行簡明理論對比的角度對ASPNET MVC框架的發展前景作出初步展望

  引言

  一直以來軟件架構師們在開發軟件的方法及架構方面爭論不休這樣的一些典型的例子包括針對ORM與存儲過程REST與SOAP結構的討論等等最近一段時間在微軟社區內又展開了一場有關ASPNET Web表單與ASPNET MVC框架的討論許多人認為ASPNET MVC框架最後將會取代Web表單機制而也有一些人堅持認為ASPNET MVC框架未來不可能取代如今已經牢牢占據NET平台上ASPNET開發統治地拉的Web表單技術那麼究竟ASPNET MVC框架是否會取代Webforms呢?

  值得注意的是從一開始微軟的眾多權威人士都一致表示ASPNET MVC框架僅僅將作為Web表單方案的一種可能的替代方案而不會徹底取代它而Web表單也不可能取代ASPNET MVC因此真正的發展趨勢將是ASPNET MVC與Web表單將共同存在ASPNET MVC決不會成為Web表單的取代者所以如果你比較喜歡ASPNET MVC你可以選擇使用它而如果你感到Web表單更易於上手你也可以盡情地按照你的傳統方式繼續使用它也就是說兩種途徑都只是針對不同的選擇不同的方法而已而提供給開發者不同的選擇本身是一件好事僅此而已當然不同的選擇也完全可以應用於其他的平台特別是另一塊比較火的Java開發平台

  ASPNET Web表單方案存在的問題

  ASPNET Web表單方案存在哪些方面的不足呢?Web表單的指導思想是把Windows桌面應用中的表單模型引入到Web應用程序的開發中這種模型很快就吸引了大批的傳統Windows桌面應用開發程序員特別是以前的VB 程序員今天許多VB 開發者已經轉到了ASPNET Web開發領域但是他們並沒有基本的HTTP與Web基本知識為了模擬傳統型Windows桌面應用程序中的表單開發體驗Web表單引入了事件驅動的方法而且還引入了Viewstate和Postback等相關概念最終Web表單技術知徹底地攻克了Web中無狀態特征這個難關隨之而來的是Viewstate和Postback帶來了大量的問題從而提高了Web應用程序開發的復雜性例如即使一些非常簡單的Web頁面也有可能產生大於KB尺寸的Viewstate這當然會在某些情況下嚴重影響系統的性能此外開發人員還無法控制Web表單生成的HTML而且ASPNET服務器控件生成的HTML既混雜有內聯方式也包含不符合標准的過時的標簽Web表單所帶來的另一個問題是與JavaScript框架的集成比較困難這主要是因為生成的HTML的命名慣例所造成的此外Web表單相應的頁面生命周期太復雜了在整個ASPNET框架中所有內容都是緊耦合型的並且僅使用一個類來負責顯示輸出和處理用戶輸入因而單元測試幾乎是一項不可能的任務而我們都知道在現代軟件開發中特別是當我們遵循敏捷軟件方法論及相應慣例開發軟件時單元測試是很重要的既然Web是無狀態的那麼Postbacks和Viewstate就不會完美的解決方案

  ASPNET MVC架構所具有的特征

  ASPNET MVC架構能夠簡化ASPNET Web表單方案編程中存在的復雜部分但是在威力與靈活性方面將一點也不會遜色於後者ASPNET MVC架構要實現的在Web應用程序開發中引入模型視圖控制器(即ModelViewController)UI模式此模式將有助於開發人員最大限度地以松耦合方式開發自己的程序MVC模式把應用程序分成三個部分—模型部分視圖部分以及控制器部分其中視圖部分負責生成應用程序的用戶接口也就是說它僅僅是填充有自控制器部分傳遞而來的應用程序數據的HTML模板模型部分則負責實現應用程序的數據邏輯它所描述的是應用程序(它使用視圖部分來生成相應的用戶接口部分)的業務對象最後控制器部分對應一組處理函數由控制器來響應用戶的輸入與交互情況也就是說Web請求都將由控制器來處理控制器會決定使用哪些模型以及生成哪些視圖正如讀者所猜想到的MVC模型將使用其特定的控制器動作(Action)來代替Web表單事件因此使用MVC模型的主要優點在於它能夠更清晰地分離關注點更便於進行單元測試從而能夠更好地控制URL和HTML內容值得注意的是MVC模型不使用ViewstatePostback服務器控件以及基於服務器技術的表單因而能夠使開發人員全面地控制視圖部分所生成的HTML內容MVC模型使用了基於REST(Representational state transfer)的URL來取代Web表單模型中所使用的文件名擴展方法從而可以使我們構造出更為符合搜索引擎優化(SEO)標准的URL當前MVC僅僅支持Net框架版本因此如果你想要在Net框架下使用MVC的話我建議你訪問一下Scott Hanselman的撰寫的博客文章(Deploying ASPNET MVC on ASPNET 你會從中找到相應的答案

  在本短文中我並不是展示一個具體的MVC示例應用程序(因為一個簡單的示例剖析就會占去相當的篇幅)因此關於MVC框架的具體實例讀者可以參考微軟最權威專家Scott Guthrie的博客也可以參考我發表在IT中的幾篇博文
(http://spaceitpubnet/?uidactionviewspaceitemid

  四結論

  選擇將根據不同的人而有所不同如果你想要更多控制HTML你想要進行測試驅動開發的話或者你更關注Web標准可訪問性或者你想構建SEO友好的URL那麼你可以選擇MVC模型如果你想要實現對系統的更好的控制以及想實現面向狀態的事件驅動的Web開發的話你可以選擇Web表單模型如果你感到使用MVC更舒適些請選擇這種模型好了而如果你感到使用Web表單模型更舒適些就應該毫不猶豫地選擇使用Web表單模型兩者僅僅是選擇的不同如果你剛開始使用ASPNET Web表單踏上你的職業生涯而還沒有對Web有一個全面的了解那麼你一下轉到MVC模型方面肯定存在不少的困難

  較之於Web表單我更為喜歡MVC模型而且我感覺微軟在今後更有可能朝著MVC作了更多的努力這種模型所具有的技術特征以及開源天性深深地吸引了我此外MVC模型還允許我全面地控制HTML並且支持測試驅動開發(TDD)還有在MVC模式下我們可以非常容易地集成進jQuery以及其他JavaScript開發框架借助於C# 中新引入的擴展方法我們自己可以構造功能強大的豐富的幫助類


From:http://tw.wingwit.com/Article/program/net/201311/15030.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.