首頁 »
2009/10/02

ASP.NET MVC技術定位與抉擇

ASP.NET MVC技術定位與抉擇
2009年9月號的台灣微軟MSDN Flash,祭司撰文一篇【ASP.NET MVC技術定位與抉擇】,目的在闡述身為ASP.NET程式開發人員,應該清楚明白ASP.NET MVC技術本質與定位,了解其本身的特性與優勢後,面對不同需求時,便可據以做出最佳的抉擇。


    在2009年4月份,微軟正式推出了ASP.NET MVC Framework,它是一個以MVC設計樣式為理念的網頁開發技術,MVC是「Model-View-Controller」三個單字字首的縮寫,這個設計樣式的主要精神,在於將Web應用程式,依其特性區分為三大類功能區塊,View代表著展現層UI介面,Controller則是負責使用者與系統之間的互動,例如Input及Output都是由Controller統籌,最後Model則代表著商業邏輯與資料處理。
ASP.NET MVC設計樣式
圖1 MVC設計樣式

然而MVC設計樣式並不是什麼新的概念,也不是什麼新的創舉,它是由Trygve Reenskaug於1978年所提出,當初是為了「縮小人類精神面Mental Model與數位系統Digital Model間的鴻溝」這個議題,企圖透過MVC功能性的分層歸類,而達到一個較好的系統設計與互動模型。MVC設計樣式從首次提出到現在,其年齡早已超過30年以上,在電腦科學的領域中,可謂是祖母級的技術;話雖如此,卻沒有貶抑其老朽不堪之意,反倒是它對今日Web開發技術有著極為深遠的影響,處處都可以看到MVC設計樣式的影子,實作或提供MVC Framework的解決方案不計其數,例如在Java領域有Struts、Tapestry與Spring等17種,PHP領域有Zend Framework、Zoop Framework等40幾種,Ruby領域有Ruby on Rails與Merb等7種,其餘在ColdFusion、Flex、Python領域亦是不勝枚舉。

    在每種主流語言領域皆有MVC Framework解決方案,且是行之有年的情況下,故微軟自是不能缺席,於是也推出了相對應的ASP.NET MVC Framework解決方案,企圖滿足不同程式設計師及專案需求。但對於ASP.NET MVC的誔生,全球ASP.NET程式設計師第一個反應,多數人不是立即熱烈擁抱或額首稱慶,反而是一連串疑惑與不安感湧上心頭,擔心現有的ASP.NET Web Form是否要改朝換代?或者是ASP.NET MVC將主導未來勢力?現有的ASP.NET技術投資將白費?是否該全面轉換到MVC的跑道?若要透析這種種的不安與疑惑,您得從ASP.NET MVC的技術定位及特性來看,深入了解後,心中那團謎霧自會煙消雲散。

    微軟對ASP.NET MVC Framework的定位是什麼?答案很簡單,就是「多一個選擇!並清楚指出在未來,現有ASP.NET Web Form及控制項技術的使用率仍會佔大宗,且會持續大力投資,沒有任何改朝換代的計劃;但對於喜歡MVC設計樣式的企業及程式設計師,將會多一個選擇性,可以在MVC設計樣式中獲得他們想要的優點與元素,以更靈活的方式來面對不同專案開發需求。那您一定會想知道,到底ASP.NET Web Form技術與ASP.NET MVC二者之間,究竟有什麼差異,有什麼是現有Web Form及控制項技術做不到的,或者說力猶未逮的,非得再另外推出一個ASP.NET MVC選擇?以下說明ASP.NET MVC的優點與利益:
1. 以MVC開發的Web在維護上較為容易
由於MVC天生採模組化設計,故會自動隔離展現層、使用者Input互動邏輯層、資料存取層之間的高度相依性,變成鬆散耦合的系統設計,因此在系統後續的維護、升級與軟體修正上,相對較為容易。
2. 可完全掌控網頁細部運作及高度客製化
由於ASP.NET MVC的網頁設計,不依賴傳統的ASP.NET控制項,強調inline Code的Markup精神,以及Controller及Model的種種自訂,所以可以對網頁細部運作有更高的掌控力,以及深入客製化的能力。
3.ASP.NET MVC可整合運用ASP.NET核心功能
雖然ASP.NET MVC不依賴傳統的ASP.NET控制項,但不意謂著全然放棄原本ASP.NET基礎架構,因為它仍然可使用原本ASP.NET諸多核心功能,例如:Forms authentication、Windows authentication、URL authorization、Membership、Roles、Output與Data Caching、Session與Profile State Management、Health Monitoring、Configuration System及Provider Architecture,所以使用ASP.NET MVC技術,依然保留與使用您所熟悉的ASP.NET技能。
4.MVC設計樣式有助於增進團隊協同開發
由於MVC本身就是分層設計的思維,因此很適合多人同時進行的團隊開發工作,例如可以將View展現層部分交由Designer設計人員,而Model及Controller則交由多個程式設計師來進行,讓團隊協同開發工作可以同步進行,功能模組也更容易切割,交由不同人來開發。
5. MVC開發模式讓測試驅動式開發式或單元測式變得容易
由於MVC的程式有明確的功能性區分,以及不依賴原有Web Form架構,因此在程式測試的層面,您可以採用事後的單元測試,或者是事前的測試驅動式開發式(Test Driven Development ,TDD),種種的測試工作在MVC的模式下,都會變得十分容易進行。

在初步瞭解ASP.NET MVC設計的優點之後,您一定會面臨抉擇上的問題,無論是學習或者實務運用上,希望能快速分辨二者的選用時機,以下是說明:
  • 使用ASP.NET Web Form技術時機
如果您是屬於以下幾種情況的使用者,建議繼續採用ASP.NET Web Form的開發模式,因為這會比較符合您實際的需求與特性。
1.    對你而言,快速建立網站與完成專案工作,其重要性遠大於對網站技術細節的控制力。
2.    喜歡ASP.NET豐富控制項所帶來的快速建置能力,以及控制項隱藏底層技術複雜度與抽象化運作,讓您專注於工作的本身,而非繁瑣的程式運作細節。
3.    對於Code-Behind程式寫作的喜好,大過於inline Code,甚至是想盡量避免inline Code的寫作模式。
4.    對於設計樣式的開發模式不感興趣,甚至是對MVC設計樣式根本熟悉,也不想了解太多。


  • 使用ASP.NET MVC技術時機
如果您符合以下幾種特質,那ASP.NET MVC將會十分適合您的需求。
1.    希望透過Markup程式的編寫,取得網頁運作的完全控制力,甚至不惜多花費一些額外力氣與時間來完成MVC設計樣式的工作。
2.    不喜歡ASP.NET控制項的底層抽象化運作,喜歡透明及全面性的掌控力。
3.    不介意inline Code程式編寫風格。
4.    喜歡設計樣式的程式開發模式,特別是對MVC明確功能性分層的設計模式有著高度偏好。
5.    期望日後應用程式有較佳的維護性與升級性。
6.    希望程式可以有較佳的測試性,或者是讓測試過程變得簡單與順利。


    最後總結,ASP.NET MVC帶來了新的選擇性,打破從前ASP.NET Web Form獨佔的局面,讓企業或程式設計師可以在兩種模式中取捨,而非取代彼此,是故喜歡原有ASP.NET Web Form的人,可以繼續保有原本技能,而想要MVC獨特利益的人,可以嘗試新的設計手法,二者可視時機交互選擇運用,完全不相衝突,最重要的是,在未來ASP.NET 4.0世代,二者都會被重視,持續做功能性的改良與進化,將ASP.NET最好的功能面呈現給各位!

  • ASP.NET MVC網站
http://www.asp.net/mvc/

  • ASP.NET MVC 1.0軟體下載
http://www.microsoft.com/downloads/details.aspx?FamilyID=53289097-73ce-43bf-b6a6-35e00103cb4b&displaylang=en

《聖殿祭司的ASP.NET》一書作者 奚江華



以IIS Smooth Streaming建立720p高畫質Silverlight影音串流←上一篇 │首頁│ 下一篇→增進Web 2.0網頁執行效能的三個有效招數-使用AJAX Minifier、Doloto與IIS壓縮
本文引用網址: