ASP.NET MVC5 網頁開發架構
作者/吳昕澧 [發表日期:2015/8/5]
前言
微軟提出ASP.NET Web Form的網頁開發概念,掀起網頁開發革命蔚為市場主流,Code Behind取代過去ASP Code inline的網頁開發架構,將程式碼與頁面設計分離,以此讓美工人員與程式人員分工合作讓網頁開發技術邁進更大一步。
微軟在2009年提出ASP.NET MVC 1,讓使用者在網頁開發技術有更多的選擇,MVC分別為Model、View、Controller的縮寫,Model模型、View檢視、Controller控制器,MVC非常重要的關注點分離(Separation of Concerns)讓開發人員只需要關注在自己需要關注的地方,使網頁開發更加方便。
MVC為何物?
MVC最早在1978年Trygve Reenskaug所提出,是Xerox PARC實驗室為了程式語言Smalltalk發明的一種軟體設計模式,應用程式切為Model、View、Controller三個部分,以此三層架構做為開發基礎,除了遵循此開發原則外,開發人員更能自行擴充其他層Ex: Service、Repository…等等。
關注點分離(Separation of Concerns)
開發人員只需要遵循三層架構原則做開發,即能輕易掌握關注點分離的原則,享受關注點分離所帶來的優勢,關注點分離的原則即是將Model、View、Controller切割開來個別解決其複雜之邏輯,讓複雜度大幅降低,個別開發人員只需要關注自己需要關注的地方即可,讓程式的維護更加容易及鞏固程式品質。
習慣取代配置(Convention over Configuration)
一個大的專案通常由一組團隊人員共同開發,每個人寫程式的習慣,命名方式都有所不同,因此團隊通常制定規範讓成員遵守,以此規範做開發,以利後續維護及修改。MVC用習慣取代配置的軟體設計規範,讓所有開發人員遵循此規範來撰寫程式,View的命名對應Controller的名稱並且一定要放在Views的目錄中;Controller命名最後必須加上Controller做結尾,開發人員習慣遵循此規範撰寫程式,後續接手其他MVC專案也能快速上手。
MVC 與 Web Form之差異
Web Form優勢
事件模型:Web Form的事件驅動提供開發人員許多可用事件,方便開發人員撰寫程式。
狀態管理:Web From的檢視狀態以及伺服器控制項,可減少管理狀態的複雜度。
網頁型架構:Web Form將網頁與Code Behind的程式碼檔案合併,方便建立一般工作的網頁。
豐富的控制項:ASP.NET社群提供大量伺服器控制項和元件,讓開發人員縮減開發時間。
MVC 優勢
關注點分離:ASP.NET MVC使用關注點分離原則,程式被分成不連續並且連結鬆散的幾個部分,分成Model、View、Controller三個部分。讓程式更容易維護。
對HTML具有更多控制:ASP.NET MVC大幅度增加對前端呈現HTML的控制。
以測試為導向的開發:ASP.NET MVC可同時建立專案及測試專案,開發人員可針對程式的每個動作建立單元測試,讓測試更加便利。
雖然ASP.NET MVC和ASP.NET Web Form之間的觀念及架構有非常大的差別,但兩種網頁開發模式都建立在ASP.NET Framework基礎之上,所以過去Web From的經驗以及功能大部分都可應用在開發MVC程式,譬如:成員資格、驗證、腳色和組態等等,這些功能在MVC運作和Web Form程式中運作一樣。
ASP.NET MVC不使用檢視狀態在維護狀態資訊,因此依賴檢視狀態的功能都無法使用,像GridView、Repeater、DataList等控制項在MVC上無法運行。MVC也不存在頁面生命週期(Page Life Cycle)及事件驅動。
重點版本日期表
MVC生命週期
MVC生命週期
結論
ASP.NET MVC提供網頁開發人員新的選擇,近年來企業越來越多選擇MVC來開發網頁,MVC以一年一版本的速度推陳出新,並非MVC就是來取代Web Form的網頁技術而是各有其優缺點,開發人員先自行評估優缺點再做選擇。
參考資料
1. 維基百科
2. 黑暗執行緒
3. ASP.NET關鍵報告
4. ASP.net MVC5 網站開發美學-小朱、陳傳興、王育民