Asp.net

我迷路了。ASP.NET MVC 5 發生了什麼?

  • July 17, 2018

我一直在低頭從事各種項目,顯然微軟一直在忙於做出一些重大改變,這讓我很困惑。當我去年安裝 Visual Studio 2017 並去創建一個新項目時,ASP.NET Core 首次引起了我的注意,突然間我可以選擇 .NET Framework、.NET Standard 和 .NET Core。所以我稍微研究了一下,發現後兩者在某種程度上是完整框架的縮寫版本。我讀了 Scott Hanselman 的這篇文章ASP.NET 5 is dead - Introducing ASP.NET Core 1.0 and .NET Core 1.0我也發現了這個,這讓我遠離了 ASP.NET Core:在 ASP.NET 和 ASP.NET Core 之間選擇. 我的收穫是“核心是新的,你可以繼續使用完整的框架。” 所以我使用 .NET Framework 4.6.2 和 Microsoft.AspNet.Mvc 5.2.3 創建了一個新的 ASP.NET MVC 站點。

自從創建該項目以來,我發現 MVC 和 Entity Framework 中似乎存在一些錯誤,只是發現在 Web 上唯一提到它們似乎是在 Core 中,並且這是唯一考慮修復它們的地方。

現在,今天,我正在嘗試查找有關 System.Web.Mvc.Controller 和 System.Web.Mvc.JsonResult 的文件,除了核心文件之外,它已經消失了。我終於把它挖到這裡說它不再被維護了?

我對 Core非常了解,然後說:“好吧,我為什麼要關心?我會繼續做我正在做的事情,並在完成後檢查一下。” 但是現在似乎不再支持 4.6.2 了。有人可以解釋發生了什麼嗎?我的 NET 4.6.2/MVC 5.2.3 項目在我寫完之前就已經過時了嗎?如果不是,為什麼文件被停用並隱藏起來?我擔心我的一些依賴項甚至可能不適用於 Core 或與 Core 兼容。

每當發布新的 .NET 公告時,此答案都會定期更新,並且已更新 ASP.NET Core 3.0、.NET 3 和 .NET 5 的詳細資訊

微軟需要為過去的混亂程度好好打一記耳光3年.NET Core / DNX、ASP.NET Core、.NET Standard、.NET 5 等 5 年。

(我是說作為 DevDiv 的前 FTE SE …… (“嗨,來自 16 號樓!”))

  • ASP.NET又名“System.Web”現在已經死了。WebForms 已死(萬歲!)

  • 2008 年推出的ASP.NET MVC建立在 ASP.NET 之上,但繞過了大部分 WebForms 基礎架構。

    • ASP.NET MVC有自己的版本控制,獨立於ASP.NETASP.NET Web API(以及ASP.NET Core)。您連結到ASP.NET MVC 5的文件 -這與ASP.NET 5不同。
  • 2012 年推出的ASP.NET Web APIASP.NET MVC的兄弟,因為它也建立在****ASP.NET之上,但有自己的類庫 ( System.Web.Http),與ASP.NET MVC ( System.Web.Mvc)。嘗試在同一個項目中將 ASP.NET Web API 服務與 ASP.NET MVC Web 應用程序結合起來是一種痛苦的練習。

  • ASP.NET MVC 5作為****ASP.NET MVC 4的更新於 2014 年推出。它與ASP.NET 5無關。

  • ASP.NET MVC 6從未發布。它被整合到ASP.NET 5中,然後成為ASP.NET Core。它的目標是將 ASP.NET MVC 和 ASP.NET Web API 結合到一個平台中。

  • ASP.NET Core於 2016 年推出,作為 ASP.NET MVC 5 的改進設計,但不依賴System.Web.dll或任何(現在的舊版)IIS 依賴項(例如,舊的請求管道,IHttpHandler不再IHttpModule存在)。

    • 請注意,ASP.NET Core的類庫的根命名空間是 nowMicrosoft.AspNet而不是System.Web. 這對我來說是一個困惑的根源。這意味著將項目從ASP.NET MVCASP.NET WebAPI 升級到 ASP.NET Core 並非易事,儘管它們的控制器和中間件的基本架構是相同的。
  • .NET Core是 CLR 和 BCL 的新版本,它具有明確的可移植性,可在 Windows、Linux 和 macOS 上執行。

    • 與Windows 獨有的全脂**.NET Framework相比,** .NET Core 1.0和**.NET Core 2.0**的基類庫被認為是乏善可陳的。
    • 隨著**.NET Core 3.0**以及 WinForms、WPF 和 .NET Framework 的其他組件的開源,.NET Core 現在已準備好作為 Windows 中 .NET Framework 的替代品,用於新的應用程序開發。
  • .NET Core 3發布後, .NET 5將成為 .NET Core 的新名稱(.NET 5 預計在 2020 年末左右)。

    • .NET 5ASP.NET 5.0ASP.NET MVC 5完全無關。
    • 沒有**.NET Core 4也沒有.NET Framework 5.0**。
  • .NET 中的 ASP.NET Core ”似乎是專門針對**.NET 5**及更高版本的ASP.NET Core第一個版本的最終名稱。

我注意到“Core”是微軟為與 .NET Core 一起工作的目前一代 .NET 平台的熱門品牌(即它們沒有 Windows 依賴項,因此是可移植的)。(就像微軟在 1990 年代使用 COM 或 ActiveX 時如何將“Active”固定在事物上,例如 Active Desktop、Active Channels、ActiMates、Active Directory、ActiveSync 等)。

  • 此外, Entity Framework Core仍然缺少 Entity Framework 6 的許多功能,這是因為它基本上是重寫的 - 但最終會達到同等水平。

因為目前有許多 .NET 執行時和 BCL(.NET Framework、.NET Core、UWP、Xamarin(使用 Mono)、Unity 等)微軟引入了**.NET Standard**,這基本上是對可移植類庫概念的重新啟動:其中 Visual Studio 項目的目標是公共功能的已知子集,而不是特定的實現。(我只是希望他們從 4 開始版本編號以匹配 .NET Framework,而不是從開始,1.0因為這讓我重新思考2001。) - 但重要的部分是ASP.NET Core 1ASP.NET核心 2以 .NET Standard 而不是 .NET Core 為目標 - 這意味著 ASP.NET Core 除了在 .NET Core 上執行之外,還執行在 Windows 上的 .NET Framework 之上。

我注意到所有以前的 .NET 跨平台兼容性技術現在都已過時(包括針對 Compact Framework 子集、可移植類庫,甚至 Visual Studio 中的“共享項目”),因為它們適用於其他版本的 .NET不再存在,例如 .NET Compact Framework、XNA、Silverlight 和 Windows Phone 7 的子集。

2019 年 5 月,微軟發布了“.NET 5”。簡而言之,.NET Framework正在被 .NET Core 取代,.NET Core 3.0 之後的下一個 .NET Core 版本將被命名為**.NET 5**)。該公告根本不涉及ASP.NET Core,只是 .NET 5 將完全支持在其上執行的ASP.NET Core 3.0應用程序。

在整個 2020 年以 Covid 為主題的夏天,微軟最終確定了 .NET 5 和 ASP.NET Core。截至 2020 年 10 月,ASP.NET Core 的 NuGet 包版本已從 3.1.x 躍升至 5.0.0 - 因此看起來 ASP.NET Core 的下一個主要版本將進行版本控制5.x.x,這表明其版本可能被命名為“ ASP.NET”。 NET Core 5 ”,儘管最近的 Microsoft 部落格文章建議名稱將是“ASP.NET Core for .NET 5”——儘管考慮到整個執行緒是出於對“ASP.NET MVC 5”與“ASP.NET”的混淆而創建的5" 我敢肯定,將其命名為“ASP.NET Core 5”或“ASP.NET Core for .NET 5”絕對不會讓人感到困惑,不是sir-ee-bob!

總之:

  • ASP.NET MVC 5

    • ASP.NET MVC 5是****ASP.NET MVC 4的短暫繼承者。
    • 它於 2014 年與ASP.NET Web API 2一起發布。
    • 它實際上執行在ASP.NET 4(即 .NET 4.x 版本System.Web.dll)之上。請注意,整個ASP.NET MVC庫現已過時。
  • ASP.NET 5已停產並重新命名為ASP.NET Core,它包含內置的“ASP.NET MVC 5”功能。

  • ASP.NET Core 1ASP.NET Core 2可以在 .NET Core(跨平台)或 .NET Framework (Windows) 上執行,因為它面向 .NET Standard。

  • ASP.NET Core 3現在只能在**.NET Core 3.0**上執行。

  • ASP.NET Core 4不存在,也從來沒有。

  • ASP.NET Core 5存在(截至 2020 年 8 月),但它的正式名稱似乎是“ASP.NET Core for .NET 5”,它僅在**.NET 5**上執行。

所有這些(按時間順序):

  • ASP.NET 1 - 2001。包括WebForms。在 .NET Framework 1.0 和 1.1 上執行。System.Web.dll.

  • ASP.NET 2.0 - 2005。包括WebForms。在 .NET Framework 2.0 上執行。System.Web.dll.

  • ASP.NET MVC 1ASP.NET MVC 2 - 2008-2009。執行在 ASP.NET 2.0 之上。System.Web.Mvc.dll.

  • ASP.NET 4.0 - 2010。包括WebForms。在 .NET Framework 4.0 上執行。沒有ASP.NET 3.0System.Web.dll.

  • ASP.NET MVC 3ASP.NET MVC 4 - 2010-2013。執行在 ASP.NET 4.0 之上。System.Web.Mvc.dll.

  • ASP.NET Web Api 1 - 2012。在ASP.NET 4.0之上執行。System.Web.Http.dll.

  • ASP.NET MVC 5 - 2013。只是對****ASP.NET MVC的另一個更新。在ASP.NET 4.0之上執行,但也可以在沒有System.Web.dllOWIN 的情況下獨立執行。

  • ASP.NET Web API 2 - 2013。同級到ASP.NET MVC 5。也可以在沒有ASP.NET 4.0的情況下在 OWIN 下執行。

  • ASP.NET MVC 6 - 2014-2015。在達到候選發布狀態後中止並在 2016 年作為ASP.NET Core MVC 1.0重新啟動,這是ASP.NET Core 1的 MVC 和 Web API 組件。

  • ASP.NET 5 - 2014。此處描述的 ASP.NET 的主要重啟。主要更改包括合併 MVC、Web Pages 和 Web API - 以及刪除WebForms。ASP.NET 5 達到了候選發布狀態,但隨後更名為ASP.NET Core。從來沒有ASP.NET 6

  • ASP.NET Core 1 - 2016。在**.NET Framework 4.5.NET Core 1.0**上執行。

  • .NET Core - 2016。可移植且最小的 .NET 執行時和類庫。

  • .NET Standard - 2017。一種程序以一組通用功能為目標的方法,這些功能將出現在所有 .NET 實現(.NET Framework 4.5 及更高版本、.NET Core 2.0 及更高版本、Xamarin 等)中。

  • ASP.NET Core 2 - 2017-2018:我們今天所處的位置。在**.NET Framework 4.6.1.NET Core 2.0**上執行。(截至 2018 年底,現在有 ASP.NET Core 2.1)。

  • ASP.NET Core 3 - 2018 年 10 月下旬,微軟宣布 ASP.NET Core 3.0 現在只能在即將推出的 .NET Core 3.0 上執行(因此它將不再在 .NET Framework 4.7.x 上執行)。這是一個有爭議的舉動,因為這意味著現在沒有從 ASP.NET Core 2.x 到 ASP.NET Core 3.x 的升級路徑,因為依賴項不支持,所以在 .NET Framework 4.7.x 上執行的應用程序.NET Core,這意味著可能不會有 .NET Standard 3.0。

  • .NET 5 - 2019 年 5 月:微軟宣布**.NET Core 3.1**之後的下一個 .NET Core 版本不會被稱為“.NET Core 4.0”或“.NET Core 5.0”,而是會跳到版本號 5.0 並放棄“Core” “品牌,因此是“ .NET 5.0 ”。

  • .NET 5 上的 ASP.NET Core 3.0 - 在 2019 年 5 月的**.NET 5**公告中,微軟還表示 ASP.NET Core 3.0 應用程序將在 .NET 5 上執行。目前尚不清楚 ASP.NET Core 2.x 應用程序是否將能夠在未修改的情況下在 .NET 5 上執行。

  • .NET 上的 ASP.NET Core vNext 5 - 2020 年 8 月:隨著**.NET 5**的即將發布,Microsoft 已將 ASP.NET Core 的 NuGet 包的版本號提高到5.0.0. 微軟尚未正式/正式將這個新版本的 ASP.NET Core 稱為“ASP.NET Core 5”,但我認為這是已成定局。

  • 適用於 .NET 5 的 ASP.NET Core 2020 年 9 月的一篇更新的部落格文章表明,微軟將 ASP.NET Core 的下一個版本稱為“適用於 .NET 5 的 ASP.NET Core ”(是的,這是拗口 - 至少它不像以前的名字那樣模棱兩可)。

時間線和框圖

(我做這個被沖昏了頭腦……)

帶有 ASP.NET 時間線的圖表和顯示 .NET Framework、ASP.NET 和 ASP.NET MVC 的組件如何組合在一起的框圖

引用自:https://stackoverflow.com/questions/51390971