科技新知

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 網站開發美學-小朱、陳傳興、王育民