了解 .NET 版本:.NET Core、.NET Standard、.NET Framework 等
.NET、.NET SDK、.NET Core、.NET Standard 和 .NET Framework 等术语在.NET 生态系统中的应用可能会让人感到困惑。 在使用 Visual Studio 2022 的 C# 开发环境中,它们各自发挥着独特的作用,了解它们之间的差异对于为您的项目选择合适的目标框架至关重要。
本文以 Tim Corey 的视频".NET 版本详解 - .NET、.NET Core、.NET Standard、.NET Framework 等"为基础,旨在简化这些术语,并就哪些术语以及何时使用提供明确指导。
为什么 .NET Core 需要存在
.NET Framework,通常简称为 .NET,二十多年来一直是软件开发和桌面运行时的主要工具。 然而,由于其局限性,有必要创建 .NET Core。 Tim Corey 强调了几个关键原因:
1.补丁和解决方法:随着时间的推移,.NET Framework 积累了大量的补丁和解决方法,这大大降低了它的运行速度(1:35)。
2.Windows依赖性:.NET Framework与Windows深度集成,因此很难在其他平台上使用。 这种依赖性阻碍了跨平台开发(2:03)。
3.单体设计:.NET Framework 在设计时将所有内容都包含在一个软件包中,这样做虽然方便,但却导致系统臃肿,效率低下(2:25)。
4.概念过时:20 多年前开发的 .NET Framework 在设计时并没有考虑到现代互联网和移动应用(3:20)。
.NET 应用程序的结构
要了解 .NET Core 的优势,必须掌握 .NET 应用程序的结构。

正如 Tim Corey 解释的那样:
1.C# 源代码:您的 C# 代码首先会被编译成中间语言 (IL) 代码(5:49)。
2.通用语言运行时(CLR):然后由 CLR 执行 IL 代码。 .NET Framework 和 .NET Core 有不同的 CLR,但它们处理 IL 代码的方式类似,因此您的源代码在两个平台上的大部分内容保持不变(6:42)。
.NET Core 相对于 .NET Framework 的优势
.NET Core 运行时是为解决 .NET Framework 的不足而开发的开发框架。 Tim Corey 强调了其主要优点:
1.跨平台兼容性:与 .NET Framework 不同,.NET Core 可在多个平台上运行,包括 Windows、Mac、Linux、Android、iOS、Xbox、IoT 等。
2.性能:.NET Core 提供了显著的性能改进。 它消除了传统补丁,支持现代硬件和软件实践,比 .NET Framework 更快。
3.模块化:.NET Core 是模块化的,允许开发人员只包含必要的组件,从而减少开销并提高效率。
4.现代功能:.NET Core 具有更多开箱即用的现代功能,如内置依赖注入和日志记录,这些功能促进了开发中的最佳实践。
5.开放源代码:.NET Core 是开放源代码,鼓励社区贡献和透明开发。
6.符合行业标准:与仅限于 Windows 环境的 .NET Framework 不同,.NET Core 遵循行业标准,确保与现代技术的兼容性和集成性。
7.易于升级:.NET Core 的升级通常很简单,通常只需要更改版本号和更新 NuGet 软件包。 微软的这部分升级过程已经简化,与.NET Framework 相比,破坏性改动较少,而.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 桌面和网络应用程序,但跨平台能力有限。
.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 vs. LTS
Tim Corey 解释了两种支持窗口之间的区别:Standard Term Support (STS) 和 Long-Term Support (LTS).
STS(标准期限支持):提供为期 18 个月的支持窗口。 例如,2020 年 11 月发布的 .NET 5 支持到 2022 年 5 月。2022 年 11 月发布的 .NET 7 也有类似的 18 个月支持窗口期,到 2024 年 5 月结束。
- LTS(长期支持):提供 3 年的较长支持窗口。 .NET 6 于 2021 年 11 月发布,支持期至 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 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与ASP.NET Core
Tim 解释了 ASP.NET 和 ASP.NET Core 之间的区别:
ASP.NET:基于 .NET Framework 构建,支持 Web 窗体、MVC 和 Web API。 ASP.NET Core 中尤其不包括 Web 窗体。
- ASP.NET Core:用于在 .NET Core 上构建网络应用程序的模块化框架。 其中包括 Razor Pages、MVC、API、Blazor Server 和 Blazor WebAssembly。 ASP.NET Core 的设计与其前身相比更加灵活和现代化。
Tim 在 1:21:00 时澄清,ASP.NET Core 继续以新功能和更大的模块化支持网络开发,而 ASP.NET (Framework) 则更加传统,仅限于较旧的 .NET 版本。
结论
从 .NET Framework 的历史背景到 .NET Core 及其他的现代功能,Tim Corey 为您提供了一个清晰而富有洞察力的 .NET 生态系统导航指南。 他的视频解释了.NET版本的演变、.NET Core的必要性以及模块化和跨平台兼容性的好处。 无论您是在 .NET Framework 和 .NET Core 之间做出选择,还是了解各种 .NET 版本的支持生命周期,Tim 的解释都为您做出明智的开发决策提供了宝贵的路线图。
如需了解更多深入讨论和实际编码示例,请务必访问 Tim Corey 的 YouTube 频道IIAmTimCorey。


