理解 .NET 版本:.NET Core, .NET Standard, .NET Framework,及更多
[[academy-video-youtube({"vid": "X75vbT-Yv-c", "start_time": "0", "title": "Understanding .NET Versions: .NET Core, .NET Standard, .NET Framework, and More", "creator": "Tim Corey", "length": "1h 25s"})]]
在 .NET 生態系統中航行可能會感到困惑,有像 .NET、.NET SDK、.NET Core、.NET Standard 和 .NET Framework 等術語。 每一個在使用 Visual Studio 2022 的 C# 開發環境中扮演著獨特的角色,而理解它們之間的差異對於為您的專案選擇合適的目標框架至關重要。
這篇文章是基於 Tim Corey 的影片 ".NET 版本解釋 - .NET、.NET Core、.NET Standard、.NET Framework 和更多",旨在簡化這些術語並提供明確的使用和何時使用的指導。
為何 .NET Core 需要存在
.NET Framework,通常簡稱為 .NET,在軟體開發和桌面運行時中已存在超過二十年。 然而,其限制要求建立 .NET Core。 Tim Corey 突出了一些關鍵原因:
修補程式和變通方法:隨著時間的推移,.NET Framework 積累了大量修補和變通方法,這大大降低了其速度 (1:35)。
Windows 依賴性:.NET Framework 與 Windows 深度整合,難以在其他平台上使用。 這種依賴性阻礙了跨平台開發 (2:03)。
單一設計:.NET Framework 被設計為將所有內容包含在一個套件中,雖然方便,但導致系統臃腫且效率較低 (2:25)。
- 陳舊觀念:在超過 20 年前開發,.NET Framework 並未考慮到現代互聯網和移動使用 (3:20)。
.NET 應用的結構
為了了解 .NET Core 的好處,掌握 .NET 應用的結構是很重要的。

如 Tim Corey 所解釋:
C# 源碼:您的 C# 程式碼首先被編譯成中介語言 (IL) 程式碼 (5:49)。
- 公共語言運行時 (CLR):IL 程式碼隨後由 CLR 執行。 .NET Framework 和 .NET Core 有不同的 CLR,但它們處理 IL 程式碼的方式相似,這使得您的大部分源程式碼在兩個平台上可以保持不變 (6:42)。
.NET Core 相較於 .NET Framework 的優勢
.NET Core 運行時是一個開發框架,旨在解決 .NET Framework 的不足之處。 Tim Corey 突出了其主要好處:
跨平台相容性:與 .NET Framework 不同,.NET Core 被設計為可以在多個平台上運行,包括 Windows、Mac、Linux、Android、iOS、Xbox、物聯網等。
性能:.NET Core 提供了顯著的性能提升。 它消除了舊的修補程式,並支持現代硬體和軟體方法,使其比 .NET Framework 更快。
模塊化:.NET Core 是模塊化的,允許開發者只包含必要的組件,降低了開銷並提高了效率。
現代功能:.NET Core 配備了更多現代化的開箱即用功能,例如內建的依賴注入和日誌記錄,促進了開發中的最佳實踐。
開源:.NET Core 是開源的,鼓勵社區的貢獻並提高了開發的透明度。
符合業界標準:.NET Core 遵循業界標準,確保與現代技術的相容性和整合,不同於 .NET Framework,後者僅限於 Windows 環境。
- 易於升級:升級 .NET Core 通常簡單,通常只需要修改版本號和更新 NuGet 套件。 微軟的升級過程部分得到簡化,相較於 .NET Framework,後者在歷史上涉及更複雜和有問題的升級。
.NET Standard
Tim 解釋說,.NET Standard 是一個規範,定義了所有 .NET 平台必須實現的一組 API,而不僅僅是一個運行時。它提供了一個統一的 API,確保跨不同 .NET 實現的程式碼相容性。 這意味著您可以編寫可以在 .NET Core 和 .NET Framework 上運作的程式庫。 在 33:35 時,Tim 討論了所有 .NET Standard 的版本,直到最新版本。 下面截圖中顯示了概述:

.NET 版本的詳細分析
.NET Framework 時間表
.NET Framework 自 2000 年代早期問世以來一直存在,並與 Windows 緊密整合。 它適合構建 Windows 桌面和 Web 應用,但在跨平台能力方面受到限制。
.NET Framework 1.0 (2002年1月)
Tim Corey 將 .NET Framework 1.0 的首次發布描述為革命性的,引入了一種通用中介語言的概念,允許多種程式語言共存 (40:07)。 這基礎版本提供了一個為多種語言統一平台的機會,為未來的開發奠定了基礎。
.NET Framework 2.0 (2005年10月)
三年後發佈的 .NET Framework 2.0 帶來了重大的改進和新增功能,繼續推動著平台的增長 (41:40)。 這一版本以其增強的語言功能和對更廣泛應用範圍的支持而著稱。
主要更新:
2006年11月:.NET Framework 3.0 推出(41:43)。
2007年11月:.NET Framework 3.5,一個重要的里程碑,被釋出(41:49)。
2010年4月:.NET Framework 4.0,最後一個主要版本,問世(42:13)。
2012年8月:.NET Framework 4.5 發布(42:50)。
- 2019年4月:.NET Framework 4.8,最後的小版本,推出(47:17)。
.NET Core 版本
.NET Core 1.0 (June 2016)
Tim Corey 將 .NET Core 1.0 描述為一種概念驗證,功能有限,旨在展示 .NET Core 的潛力 (43:32)。 這一初始版本奠定了基礎,但由於其功能有限,並未被廣泛採用。
.NET Core 2.0 (2017年8月)
作為一個功能更豐富的更新發布,.NET Core 2.0 包括了特別是在Web應用開發上的重要進展 (45:23)。 然而,它不是一個 LTS 版本,Tim 強調它包含了破壞性更改,導致稍後釋出了更穩定的版本。
.NET Core 2.1 (May 2018)
.NET Core 2.1 是一個 LTS(長期支持)版本,這一點 Tim 指出對於需要穩定性和長期支持的企業來說至關重要(45:42)。 這是一次重要的更新,使得 .NET Core 更加適合於生產使用。
.NET Core 3.0 (2019年9月)
.NET Core 3.0 引入了桌面應用程式的支持,包括 WinForms 和 WPF,將其用途擴展到Web應用之外(53:04)。 這一版本使得 .NET Core 成為一個更全面的平台,吸引了從 .NET Framework 遷移的商業使用者。
.NET Core 3.1 (2019年12月)
基於 3.0,.NET Core 3.1 是另一個 LTS 版本,為桌面和Web應用程式提供持續支持和穩定性(53:16)。 Tim 解釋道,這一版本標誌著 .NET Core 被認為功能完備且可以被企業可靠使用的時刻。
.NET 5 及其後續
.NET 5.0 (2020年11月)
隨著 .NET 5 的釋出,微軟去掉了名稱中的 "Core" 以簡化品牌 (58:03)。 Tim 解釋這一變更旨在減少 .NET Framework 和 .NET Core 之間的混淆。 .NET 5 代表了統一 .NET 生態系統的一個重大步伐,使用一個名稱。
.NET 6.0 (2021年11月)
.NET 6 繼續了與 .NET 5 開始的年度發布周期(59:56)。 Tim 提到每一個新版本,包括 .NET 6,都是年度更新節奏的一部分,允許定期的改進和功能新增。
.NET 7.0 (2022年11月)
.NET 7 遵循了年度發布模式,進一步改善平台的細微更新和改進(59:56)。 Tim 討論了這個版本以及它的前代產品如何在微軟承諾持續開發和創新 .NET 生態系統中的角色。

理解 .NET 版本和支持生命週期
Tim Corey 在 (1:01:27) 提供了 .NET 版本及其支持生命週期的詳細解釋。 以下是所討論的關鍵點摘錄:
支持生命週期:STS vs. LTS
Tim Corey 解釋了兩種型別支持窗口的區別:標準支持週期 (STS) 和 長期支持週期 (LTS)。
STS (標準支持週期):提供一個18個月的支持窗口。 例如,2020年11月發布的 .NET 5 支持到 2022年5月。2022年11月發布的 .NET 7 也有類似的18個月支持窗口,截止到 2024年5月。
- LTS (長期支持週期):提供3年的支持窗口。 2011年11月推出的 .NET 6 將支持到 2024年11月。預計2023年11月發布的 .NET 8 將成為下一個 LTS 版本,支持到 2026年11月。
Tim 指出,雖然快速移動的應用開發者可能更喜歡使用 STS 版本以獲取最新功能,但公司通常更偏好 LTS 版本,因為更穩定且支持時間更長。
升級路徑和版本發布
Tim Corey 描述了 .NET 版本的升級路徑:
從 .NET 5 升級到 .NET 6:您將有一年的重疊時間,期間兩個版本都受到支持。
從 .NET 6 升級到 .NET 8:在 .NET 6 支持結束之前,您將有整整一年的時間來升級到 .NET 8。
- 未來升級:遵循這種模式,.NET 8(截至目前是最新版本)將支持到 .NET 10 出現,給您足夠的時間進行升級。
Tim 強調,這種可預測的釋出週期允許公司有信心地計劃升級。

微軟的支持策略
Tim 討論了微軟的支持和開發方法:
成本和複雜性:擴展舊版本的支持可能會很昂貴且複雜,因為需要在多個版本中保持安全更新。 這就是為什麼微軟已經採用了更可預測和可管理的支持策略。
- 模塊化框架:.NET Core 和 .NET 的模塊化方法允許更快速的功能更新和更可管理的支持生命週期。
在 .NET Framework 和 .NET Core 之間的選擇
Tim Corey 建議何時使用不同的 .NET 版本:
.NET Framework:對於現有專案或需要支持較舊的操作系統(例如 Windows XP)時使用。
- .NET Core(現在稱為 .NET):對於新項目,從最新的 .NET 版本開始。 從較舊的 .NET Framework 版本升級到 .NET 可以提供顯著的性能提升。
ASP.NET vs. ASP.NET Core
Tim 解釋了 ASP.NET 和 ASP.NET Core 之間的差異:
ASP.NET:基於 .NET Framework 的,支持 Web 表單、MVC 和 Web API。 特別是 Web 表單,並未包含在 ASP.NET Core 中。
- ASP.NET Core:一個基於 .NET Core 的模塊化框架,用於構建 Web 應用程式。 它包括 Razor Pages、MVC、API、Blazor Server 和 Blazor WebAssembly。 ASP.NET Core 被設計得更靈活和現代化,與其前身相比。
Tim 在 1:21:00 澄清了 ASP.NET Core 繼續支持網頁開發,具有新功能和更高的模塊化,而 ASP.NET (Framework)則更傳統,只限於較舊的 .NET 版本。
結論
Tim Corey 提供了一個清晰且深刻的指南,導航 .NET 生態系統,從 .NET Framework 的歷史背景到 .NET Core 及其後的現代功能。 他的影片解釋了 .NET 版本的演變、.NET Core 的必要性,以及模塊化和跨平台相容性的優勢。 無論您是在選擇 .NET Framework 和 .NET Core,還是了解各個 .NET 版本的支持生命週期,Tim 的解釋為做出知情的開發決策提供了有價值的指導。
如需更深入的討論和實用的程式程式碼範例,請務必存取 Tim Corey 的 YouTube 頻道,IAmTimCorey。


