理解.Net Standard

.NET Standard 是一项 API 规范,每一个特定的版本,都定义了必须实现的基类库(NETStandard.Library)。

如图:

dotnet-tomorrow.png

托管框架的每一种实现都有一套自己的基类库。基类库(BCL)包含诸如异常处理、字符串、XML、I/O、网络和集合这样的类。

.NET Standard 是一项实现BCL 的规范。由于.NET 实现需要遵循这项规范,所以应用程序开发人员就不用担心每一种托管框架实现的BCL 不同。

框架类库(FCL),如 WPF、WCF、ASP.NET,不包含在 BCL 中,因此,也就不包含在.NET Standard 中。

.NET Standard 与.NET 实现之间的关系就和 HTML 规范与浏览器之间的关系一样。后者是前者的实现。

因此,.NET Framework、Xamarin 和.NET Core,每一种托管框架都实现了.NET Standard 中的 BCL。随着计算机工业不断推出新的硬件和操作系统,将来还会出现新的.NET 托管框架。该标准让应用程序开发人员知道,他们可以依赖于一套始终如一的 API。

每个.NET 版本都对应一个.NET Standard 版本。

版本对应图:

QQ截图20200110132446.png

API 一致,将应用程序移植到不同的托管实现以及提供工具都会更简单。

.NET Standard 被定义为一个单独的 NuGet 包,因为所有的.NET 实现都必须支持它。工具变得简单了,因为对于特定的版本,它们有一套相同的 API。你还可以针对多个.NET 实现构建一个库项目。

参考:

Introducing .NET Standard

.NET Core 和.NET Standard 有什么不同

.NET Standard Versions