Skip to main content

[探索 3 分鐘] ASP.NET MVC 演進歷史

MVC 模式(Model–view–controller)是軟體工程中的一種軟體架構模式,把軟體系統分為三個基本部分:模型(Model)、視圖(View)和控制器(Controller)。wiki 開宗明義就是這麼說, 且在 1978 年就被提出, 至今已經將近 40 年。說穿了就是一種關注點分離設計概念, 後來各個語言都基於這個概念推出自己的 MVC 架構。ASP.NET MVC 算是發展較晚, 但發展至今大家已經離不開他了。
ASP.NET MVC 的發展歷史, 各版本有滿多差異, 接手 MVC 專案時要特別注意 MVC 版本, 免得一直拿新版本功能硬幹, 或 Install-Package UpgradeMvc3ToMvc4 指令不小心下去, 結果專案死透了。

ASP.NET

ASP.NET MVC 的起源其實是 ASP.NET 技術框架, ASP.NET 技術開發歷史如下 :
ASP.NET is a free web framework for building great websites and web applications using HTML, CSS, and JavaScript. You can also create Web APIs and use real-time technologies like Web Sockets.

ASP.NET MVC

時間過得真快, 微軟 ASP.NET MVC 框架已經發展快 10 年了 (2007 ~ 2017截稿), 近年來更是每年更新一版, 你在用的是哪一版呢 ? 我自己最多也曾經在服務的公司使用 ASP.NET MVC 5 + Web API 2, 搭配 .NET Framework 4.5, IIS 7.5, SQL Server 2008 R2, 就沒有更新了 (哭哭)。
  • 2011以前 MVC 3
  • 2012 MVC 4
  • 2013 MVC 5 (發展版本最多, 最火)
  • 2015 MVC 6
  • 2016 Core MVC 1.0
來詳細爬一下 wiki 看 ASP.NET MVC 發展歷史 :

Release history DateVersion
10 December 2007ASP.NET MVC CTP
13 March 2009ASP.NET MVC 1.0
16 December 2009ASP.NET MVC 2 RC
4 February 2010ASP.NET MVC 2 RC 2
10 March 2010ASP.NET MVC 2
6 October 2010ASP.NET MVC 3 Beta
9 November 2010ASP.NET MVC 3 RC
10 December 2010ASP.NET MVC 3 RC 2
13 January 2011ASP.NET MVC 3
20 September 2011ASP.NET MVC 4
15 February 2012ASP.NET MVC 4 Beta
31 May 2012ASP.NET MVC 4 RC
15 August 2012ASP.NET MVC 4
30 May 2013ASP.NET MVC 4 4.0.30506.0
26 June 2013ASP.NET MVC 5 Preview
23 August 2013ASP.NET MVC 5 RC 1
17 October 2013ASP.NET MVC 5
17 January 2014ASP.NET MVC 5.1
10 February 2014ASP.NET MVC 5.1.1
4 April 2014ASP.NET MVC 5.1.2
22 June 2014ASP.NET MVC 5.1.3
1 July 2014ASP.NET MVC 5.2.0
28 August 2014ASP.NET MVC 5.2.2
9 February 2015ASP.NET MVC 5.2.3
6 November 2014ASP.NET MVC 6.0.0-beta1
18 November 2015ASP.NET MVC 6.0.0-rc1
17 May 2016ASP.NET Core MVC 1.0.0-rc2
12 August 2016ASP.NET Core MVC 1.0.0
17 August 2016ASP.NET Core MVC 1.0.1
17 November 2016ASP.NET Core MVC 1.0.2
18 November 2016ASP.NET Core MVC 1.1.0

ASP.NET Core

根據微軟官網 Choose between ASP.NET and ASP.NET Core 文章, Core 版本重點就在開源以及跨平台支持。

ASP.NET CoreASP.NET
Build for Windows, Mac, or LinuxBuild for Windows
Use MVC or Web APIUse Web Forms, SignalR, MVC, Web API, or Web Pages
Multiple versions per machineOne version per machine
Develop with Visual Studio or Visual Studio Code using C#Develop with Visual Studio using C#, VB or F#
New platformMature platform
Ultra performanceHigh performance
Choose .NET Framework or .NET Core runtimeUse .NET Framework runtime

ASP.NET MVC版本特性

先不講 Entity Framework, MVC 各版本的功能變化很大, 有開發過的人應該有些感觸, 也會一直有想升級的謎之音才對。
MVC VersionVisual Studio.NET VersionRelease dateFeatures
MVC 1.0VS2008.NET 3.52009/03/13- Older Versions - MVC 1 and 2
MVC 2.0VS2008,.NET 3.5/4.02010/03/10- Older Versions - MVC 1 and 2
MVC 3.0VS2010.NET 4.02011/01/13- NuGet 整合
- 支持 H5 的專案樣板
- 包含功能強大的 Razor View 引擎
- IoC 功能與全域過濾器
- 更豐富 JavaScript、jQuery 操作支持
- 其他 release notes
MVC 4.0VS2010 (SP1), VS2012.NET 4.0/4.52012/08/15- 新增 Web API 專案範本
- 增加 Mobile WebSite 開發的範本
- 支援 Azure SDK 的開發
- 支援新的非同步Controller 解決方案
- 其他 release notes
MVC 5.0VS2013.NET 4.52013/10/17- One ASP.NET, 可同時選擇 Web Forms / MVC / Web API 範本與可變更驗證方式
- ASP.NET Identity, 整合會員管理機制, 整合 Facebook、Google、Twitter 登入
- Bootstrap 為預設專案範本
- 身分驗證過濾器IActionFilter、IAuthenticationFilter
- Filter overrides, 彈性針對 Action 或 Controller 取消特定類型的過濾器
- Attribute routing, 更彈性直覺針對 Action 或 Controller 做路由設定
- 其他 release notes
MVC 5.1/5.2VS2013.NET 4.52014/08/28- 路由功能問題修正與強化
- MVC EditorTemplates可套用於Bootstrap EditorTemplates
- Enum support in views, 如@Html.EnumDropDownList , 適合下拉選單使用列舉型別操作
- Unobtrusive validation for MinLength/MaxLength Attributes  - 字串長度驗證
- 其他 5.1 release notes
- 其他 5.2 release notes

如果真的踩到舊版本的雷, 很想進行舊版本 MVC 升級, 可以參考MVC 3 → MVC 4MVC 3 → MVC 5MVC 4 → MVC 5。建議有機會升級就升級, 為什麼 ? 可以使用較新版的 .NET Framework, 新版的 C# 語法支持, 新版的 Nuget 依賴套件, 接近開源社群, 使用新功能, 採新版本的雷 (疑?)..., 你懂我在說什麼。

參考資料

  • https://zh.wikipedia.org/wiki/MVC
  • https://zh.wikipedia.org/wiki/ASP.NET_MVC_Framework
  • https://en.wikipedia.org/wiki/ASP.NET_MVC
  • https://docs.microsoft.com/en-us/aspnet/mvc/overview/older-versions-1/
  • https://docs.microsoft.com/en-us/aspnet/mvc/mvc3
  • https://docs.microsoft.com/en-us/aspnet/mvc/mvc4
  • https://docs.microsoft.com/en-us/aspnet/whitepapers/mvc4-release-notes
  • https://docs.microsoft.com/en-us/aspnet/mvc/mvc5
  • https://dotblogs.com.tw/jasonyah/2013/09/26/asp_net-mvc5-new-feature
  • https://docs.microsoft.com/en-us/aspnet/mvc/overview/releases/mvc51-release-notes
  • https://docs.microsoft.com/en-us/aspnet/core/mvc/overview
  • https://docs.microsoft.com/en-us/aspnet/mvc/overview/releases/whats-new-in-aspnet-mvc-52
  • https://docs.microsoft.com/en-us/aspnet/web-api/
  • https://docs.microsoft.com/en-us/aspnet/signalr/
  • https://www.nuget.org/packages/UpgradeMvc3ToMvc4/
  • https://docs.microsoft.com/en-us/aspnet/mvc/overview/releases/how-to-upgrade-an-aspnet-mvc-4-and-web-api-project-to-aspnet-mvc-5-and-web-api-2
  • https://stackoverflow.com/questions/22642329/some-official-or-not-upgrade-mvc3-to-mvc5-guide
  • http://www.tutorialsteacher.com/mvc/asp.net-mvc-version-history
  • https://docs.microsoft.com/en-us/aspnet/web-pages/overview/getting-started/introducing-aspnet-web-pages-2/getting-started
  • http://www.cnblogs.com/liangxiaofeng/p/5840754.html
  • https://docs.microsoft.com/zh-tw/aspnet/core/choose-aspnet-framework
  • https://blogs.msdn.microsoft.com/msdntaiwan/2013/12/04/responsive-web-design-rwd/


Comments

Post a Comment