介绍
在本文中,我们将探讨 .NET Framework、.NET Core 和 .NET Standard 之间的差异。
.NET Framework 与 .NET Core
.NET框架 | .NET核心 | |
---|---|---|
历史 | .NET Framework 是 .NET 的第一个实现。 | .NET Core 是 .NET 的最新实现。 |
开源 | .NET Framework 的某些组件是开源的。 | .NET Core 是开源的。 |
跨平台 | 它仅适用于 Windows 平台。这不支持跨平台部署。 | 它可以跨平台运行,如 Windows、Linux 和 macOS。 |
第三方软件包支持 | 有很多第三方包、库可供使用。 | .NET Core 还支持大量第三方包,但它仍然无法与 .NET Framework 竞争。 |
应用内部署 | 它不支持应用内部署模型。 | 它确实支持应用内部署模型。 |
性能和可扩展性 | 与 .NET Core 相比,.NET Framework 在应用程序的性能和可扩展性方面效果较差。 | 与 .NET Framework 相比,.NET Core 提供了高性能和可扩展性。 |
微服务实施 | .NET Framework不支持微服务的实现。 | .NET Core支持微服务的实现 |
REST 服务实施 | 它支持 REST API 服务实现。 | 我们可以使用 .NET Core 创建 REST API。 |
命令行工具 | .NET Core 为所有支持的平台提供轻量级编辑器和命令行工具。 | .NET Framework 对于命令行界面来说很重要 |
何时使用 | * 我们的应用程序仅运行在 Windows 平台上。 * 我们的应用程序基于 WinForms 或 WPF 应用程序。 * ASP.NET Web 窗体创建。 * 如果你想创建一个WCF服务。 * 我们的应用程序使用了一些 .NET Core 不支持的第三方包。 * 该应用程序使用 .NET Core 不可用的 .NET 技术。 * 如果您的应用程序想要访问 Windows 特定的 API,则选择 .NET Framework。 | * 创建跨平台应用程序。 * 要创建微服务,那么一定要使用 .NET Core。 * 将应用程序部署到 Docker 容器。 * 创建高性能和可扩展的应用程序。 * 如果您并行运行多个 .NET 版本,请选择 .NET Core。 * 如果您想要命令行界面 (CLI) 控制,那么 .NET core 是最佳选择。 |
何时不使用 | * 跨操作系统平台运行是应用程序的要求。 * 如果你想实现微服务。 * 需要最佳性能和可扩展性的 Web 应用程序 | * .NET Core 中不存在 ASP.NET WebForms。 * 如果你想创建一个WCF服务。 * 如果您的应用程序想要访问特定于 Windows 的 API。 * 如果您的应用程序需要使用 Windows 注册表、WMI 或其他 Windows 特定 API,则它将无法与 .NET Core 一起使用。 |
.NET Standard
假设我们使用 .NET Framework 创建了一个应用程序并使用了一些共享库(由 .NET Framework 开发)。一段时间后,我们决定在 .NET Core 中创建一个应用程序,并尝试重用上述相同的共享库。它兼容吗?我们可以使用它吗?答案是不。由于兼容性问题,我们无法在 .NET Core 应用程序中使用 .NET Framework 基类库。基本上,面向 .NET Framework 的库只能在基于 .NET Framework 的应用程序中运行,而面向 .NET Core 的库只能在 .NET Core 兼容的应用程序中运行。
解决办法是什么?
解决方案是**.NET Standard。**.NET Standard 是一组 API 的规范,它与任何 .NET 平台(.NET Framework 或 .NET Core)兼容。如果我们使用 .NET Standard 创建基类库,那么它将与任何 .NET 运行时一起运行。因此,如果您想创建一个稍后重用的共享库,那么您可以选择 .NET Standard,因为它也可以与 .NET Framework、.NET Core 和 Xamarin 一起移植。
每个 .NET Standard 版本都包含一些 API 集,例如 System.Data、System.Collections 等。如果引入新版本的 .NET Standard,则它包含所有以前版本的 API 集以及一些新 API。更高版本的 .NET Standard 意味着更多可用的 API。
.NET Standard 是:
- 它不是像 .NET Framework 或 .NET Core 那样的框架。
- 这是所有 .NET 实现都必须实现的一组基本 API
- 用于代码共享并在不同运行时之间重用代码。
- 与任何 .NET 应用程序兼容。

.NET Standard 支持多种框架,如下表所示:
.NET Standard - .NET | Microsoft Learn
.NET Standard | 1.0 | 1.1 | 1.2 | 1.3 | 1.4 | 1.5 | 1.6 | 2.0 | 2.1 |
---|---|---|---|---|---|---|---|---|---|
.NET | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 | 5.0 |
.NET Core | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 | 2.0 | 3.0 |
.NET Framework 1 | 4.5 | 4.5 | 4.5.1 | 4.6 | 4.6.1 | 4.6.1 2 | 4.6.1 2 | 4.6.1 2 | N/A3 |
Mono | 4.6 | 4.6 | 4.6 | 4.6 | 4.6 | 4.6 | 4.6 | 5.4 | 6.4 |
Xamarin.iOS | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.14 | 12.16 |
Xamarin.Mac | 3.0 | 3.0 | 3.0 | 3.0 | 3.0 | 3.0 | 3.0 | 3.8 | 5.16 |
Xamarin.Android | 7.0 | 7.0 | 7.0 | 7.0 | 7.0 | 7.0 | 7.0 | 8.0 | 10.0 |
Universal Windows Platform | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0.16299 | 10.0.16299 | 10.0.16299 | TBD |
Unity | 2018.1 | 2018.1 | 2018.1 | 2018.1 | 2018.1 | 2018.1 | 2018.1 | 2018.1 | 2021.2.0b6 |
概括
- .NET Framework主要用于基于Windows的应用程序开发,与.NET Core相比效率较低。
- .NET Core 是开源的,用于开发跨平台应用程序和微服务。
- .NET Standard 用于创建可在任何 .NET 平台中重用的共享库。
我希望您喜欢本文,并且现在了解 .NET Framework、.NET Core 和 .NET Standard 之间的差异。