1.2 .NET Standard又是什么

.NET经过多年的发展,其生态环境覆盖了客户端和服务器两个应用程序开发的最主要的方面。如果你觉得.NET只是微软在开发在使用,那就太狭隘了。实际上,在客户端上有游戏引擎Unity支持C#语言进行游戏开发,涵盖了桌面的游戏和手机游戏,著名的手游《王者荣耀》也使用Unity开发。另一个客户端软件Xamarin,支持从Linux、macOS到手机操作系统iOS、Android的用户界面应用程序的开发。这些项目很多时候都不是微软公司在主导的。除此之外,服务器端的Mono也是在使用.NET的技术规范为开发者提供支持。

随着时间的流逝,这些覆盖到端和服务器上的.NET开发框架渐渐地呈现了离散化发展的趋势。这也很好理解,因为客户端和服务器有各自不同的开发场景,例如手机客户端要求运行高效、节能;而服务器端却强调高并发大量的数据处理能力。这就造成了各自的开发框架支持的API中间产生了很多差别。这对.NET最初提出来的“一次编译,处处运行”是相悖的。现在是时候对多个.NET框架进行规范了。规范.NET框架是在尊重.NET开发框架各自发展的道路上,最大可能地保证.NET应用程序的通用性和移植性。

.NET Standard就是.NET基金会提出的.NET开发框架的规范文本。请注意,.NET Standard并不是一组程序,而是一组纯文本的类型和函数声明信息,用来规范相同功能的类型和函数在不同的.NET开发框架中具有相同的形态。

这样一来,基于.NET Standard规范的应用程序就可以无缝地在各种开发框架之间进行迁移。因为所有支持.NET Standard的开发框架都有义务按照.NET Standard规范实现相应的函数声明。

表1.1中列举了各种.NET开发框架对于.NET Standard版本的支持。

表1.1 .NET Standard和开发框架兼容列表

随着计算机技术的不断发展,.NET Standard也会不停地进化,虽然在早期的版本1.x或者2.x版本中主要的任务是规范现有函数的声明和调用,但是在未来,.NET Standard将会主导.NET的发展,对一些领域的库函数提出规范化的开发指导意见。

.NET Standard规范是完全纯文本的,内含有成千上万的函数声明。读者可以访问http://www.github.com/dotnet/standard查看这些函数的声明。当前最新的规范标准版本是2.0,并且2.0版本还在持续完善中。有关.NET Standard 2.0规范可以参考:

    https://github.com/dotnet/standard/tree/master/docs/netstandard-20

.NET Standard 2.0规范的最完整函数声明列表,请参考:

    https://raw. githubusercontent. com/dotnet/standard/master/docs/versions/netstandard2. 0 _
    ref.md

.NET Standard 2.0相较于.NET Standard 1.6来说,规范制定有很大的进展,定义的函数声明从16000多个扩展到了32000多个。这些API绝大多数都是从.NET Framework迁移来的。

.NET Standard 2.0还正式支持了WCF,这使得用.NET Core构建基于SOA的应用程序更加简单。