問題源於這么一本書:
《ASP.NET 4 解密(卷1)》,這本書大約是六七年前買的了,根據其名字,它講述的是ASP.NET 4,那么ASP.NET現在究竟是什么版本?與.NET Framework版本的關系是什么?與.NET Core,ASP.NET Core又有什么關系?我整理了這么一張表,可能其中有些瑕疵,但總體八九不離十。
時間 | Visual Studio | .NET Framework | ASP.NET | ASP.NET MVC | .NET Core | ASP.NET Core |
2002 | Visual Studio.NET | 1.0 | 1.0 | |||
2003 | Visual Studio.NET 2003 | 1.1 | 1.1 | |||
2005 | Visual Studio 2005 | 2.0 | 2.0 | |||
2006 | 3.0 | 3.0 | ||||
2008 | Visual Studio 2008 | 3.5 | 3.5 | |||
2009 | 1.0 | |||||
2010 | Visual Studio 2010 | 4.0 | 4.0 | 2.0 | ||
2011 | 3.0 | |||||
2012 | Visual Studio 2012 | 4.5 | 4.5 | 4.0 | ||
2013 | Visual Studio 2013 | 4.5.1 | 4.5.1 | 5.0 | ||
2014 | 4.5.2 | 4.5.2 | 5.2 | ASP.NET 5 | ||
2015 | Visual Studio 2015 | 4.6 | 4.6 | 5.2.3 | ||
2016 | 1.0 | 更名並發布1.0 | ||||
2017 | Visual Studio 2017 | 4.7 | 2.0 | 2.0 |
- ASP.NET是與.NET Framework一起發布的,它屬於.NET Framework的一部分,它的實現是封裝在System.Web.dll中的,所以可以認為.NET Framework的版本就是ASP.NET的版本
- 但到了ASP.NET 4.6之后,微軟計划的下一代ASP.NET是要具備“跨平台”特性的,也就是說,它並不再依賴於.NET Framework,這個項目代號為“ASP.NET vNext”的產品后來一度被稱作ASP.NET 5,直到2016年才被正式更名為ASP.NET Core並發布1.0版,所以ASP.NET Core並不是ASP.NET的繼任者,它架構與ASP.NET相差較大,並且不依賴於System.Web.dll
- ASP.NET Core基於.NET Core,它是跨平台的
- .NET Core和ASP.NET Core都是開源的(使用MIT License),而.NET Framework和ASP.NET並不開源
- ASP.NET MVC是微軟官方提供給ASP.NET的額外的MVC框架,可以獨立通過nuget獲取,其最新版是5.2.4(截止2008年3月8日,就是我寫下這段文字的時候),由於使用廣泛,不少人將其與ASP.NET搞混,其實從時間上來看,ASP.NET MVC出現較晚,直到2011年的3.0版本出來,推出了Razor渲染引擎才算比較成熟,另外ASP.NET MVC是開源的
- 另外有一個叫ASP.NET Web API的框架,與ASP.NET MVC框架類似,可以獨立通過nuget獲取,開發模式與ASP.NET MVC類似,區別在於側重點,Web API注重數據交換而不是頁面渲染
- ASP.NET Core中直接包含了MVC及Web API的功能(其實准確的說,應該是你可以自由選擇其中的各個組件,可謂豐儉由人)
好了,那接下來的問題是:我改選擇什么?
答案顯而易見,肯定是最新的ASP.NET Core 2.0了,(事實上,到我寫下這段文字時,它最新版是2.0.4)當然了,前提是你有得選的話,至於.NET好在哪,C#好在哪這種問題,請自行知乎。