了解.NET版本:.NET Core、.NET Standard、.NET Framework等
.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 有不同的 CLRs,但它們處理 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 遵循行業標準,確保與現代技術的兼容性和整合,與僅限於 Windows 操作系統的 .NET Framework 不同。
- 易於升級:.NET Core 的升級通常相對簡單,常常只需要變更版本號和更新 NuGet 套件。 微軟的升級過程部分被簡化了,與常常涉及更複雜和有問題的 .NET Framework 升級相比,破壞性變更更少。
.NET Standard
Tim 解釋說,.NET Standard 是一個規範,定義了所有 .NET 平台必須實現的一組 APIs,並不僅僅是運行時。它提供了一個統一的 API,確保代碼在不同 .NET 實現之間的兼容性。 這意味著您能夠撰寫能在 .NET Core 和 .NET Framework 上運行的庫。 在 33:35,Tim 討論了所有版本的 .NET Standard 直到最新版本。 以下的截圖給出了總結:

.NET 版本的詳細解析
.NET Framework 時間軸
.NET Framework 自 2000 年代初期便存在並與 Windows 緊密整合。 它適合構建 Windows 桌面和網頁應用程序,但在跨平台能力方面受到限制。
.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 (2016年6月)
Tim Corey 將 .NET Core 1.0 稱為一個概念驗證項目,其功能有限,旨在展示 .NET Core 的潛力 (43:32)。 這個初始版本奠定了基礎,但由於其功能有限,並未得到廣泛採用。
.NET Core 2.0 (2017年8月)
作為一個擁有更多功能更豐富的更新發布,.NET Core 2.0 包含了重要的進展,特別是在網頁應用的開發上 (45:23)。 然而,它並不是一個 LTS 版本,Tim 指出它包含了一些破壞性變更,這導致後來版本的更穩定發行。
.NET Core 2.1 (2018年5月)
.NET Core 2.1 是一個 LTS(長期支持)版本,Tim 指出對需要穩定性和延長支持的企業至關重要 (45:42)。 這是一次重大更新,使得 .NET Core 更加適合生產應用使用。
.NET Core 3.0 (2019年9月)
.NET Core 3.0 引入了對桌面應用的支持,包括 WinForms 和 WPF,擴展了其用於面向網頁應用的使用範圍 (53:04)。 此版本使 .NET Core 成為更全面的平台,吸引企業從 .NET Framework 遷移過來。
.NET Core 3.1 (2019年12月)
基於 3.0,.NET Core 3.1 是另一個 LTS 版本,為桌面和網頁應用提供持續支持和穩定性 (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 與 LTS
Tim Corey 解釋了兩種類型的支持窗口之間的區別:標準期限支持 (STS) 和 長期支持 (LTS)。
-
STS (標準期限支持):提供 18 個月的支持窗口。 例如,.NET 5 於 2020 年 11 月發佈,支持至 2022 年 5 月。 .NET 7 於 2022 年 11 月發佈,具有相似的 18 個月支持窗口,結束於 2024 年 5 月。
- LTS (長期支持):提供 3 年的長期支持窗口。 例如,於 2021 年 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:將它用於現有專案,或者支援舊操作系統 like 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 Forms、MVC 和 Web API。 特別是 Web Forms,並不包含在 ASP.NET Core 中。
- ASP.NET Core:一個在 .NET Core 上構建網頁應用的模組化框架。 它包含 Razor 页面、MVC、API、Blazor 服务器和 Blazor WebAssembly。 ASP.NET Core 與其前身相比更靈活和現代化。
Tim 在 1:21:00 之處闡明:ASP.NET Core 繼續支援網頁開發,具有更多新功能和更大的模組化同時 ASP.NET(.NET Framework)則更為傳統並且僅限於較舊的 .NET 版本。
結論
Tim Corey 提供了一份清楚和深刻的指南,帶領您駐足於 .NET 生態系統,從 .NET Framework 的歷史背景到 .NET Core 的現代化能力及其他內容。 他 的 視頻 說明了 .NET 版本的演進,.NET Core 的必要性及其模組化與多平台兼容的優勢。 不論您是在 .NET Framework 和 .NET Core 之間進行選擇,還是對各個 .NET 版本的支持生命周期有所深入了解,Tim 的解釋都為做出明智的開發決策提供了一條寶貴的路線圖。
如若您需要更多深入討論和實際編碼範例,務必到訪 Tim Corey 的 YouTube 頻道,IAmTimCorey。

