.NET Framework 与 .NET Core 与 .NET Standard 之间的差异

介绍

        在本文中,我们将探讨 .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 Framework 与 .NET Core 与 .NET Standard 之间的差异_第1张图片

.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 之间的差异。

你可能感兴趣的:(.netcore,.net)