微软释出.NETStandard2.1,拟新增三千个API

微软在去年发布.NET Standard 2.0,约一年的时间再次更新并释出.NET Standard 2.1,这期间已经发布了.NET Core 2.1两个版本,接下来即将时出.NET Core 2.2。微软现在对.NET Standard进行更新,预计新增三千个API,其中一大部分是全新的API,另一部分则是增加原有的API范围,以进一步汇总.NET的实作。
这次的更新不只是对原本语法进行更新,同时也加入了一些新概念。.NET Standard 2.1现支援Span
为了提高生产力,.NET生态系统一直使用大量的动态功能,包括Reflection以及Reflection Emit。Emit通常作为最佳化效能的工具,以及为代理界面动态生成类型的方法,而这样的方便性让不少开发者要求微软在.NET Standard中加入Reflection Emit。过去曾透过NuGet套件这样的功能,但是微软后来发现,套件难以模拟这种核心技术,因此在.NET Standard 2.1中正式支援,开发者可以使用轻量级程式码生成(Lightweight Code Generation,LCG)以及Reflection Emit。
再来.NET Standard 2.1重要的更新便是增加支援SIMD,在.NET Framework和.NET Core都已经支援SIMD一段时间了,微软利用SIMD来加速BCL中的基本运算,像是字串比较等功能。跟Reflection Emit功能一样,有不少开发者要求微软在.NET Standard中公开这些API,毕竟这些功能需要Runtime支援,因此无法光以NuGet套件提供。
微软还为.NET Standard 2.1新增了ValueTask和ValueTask
在.NET Standard 2.0中,微软在ADO.NET中添加了很多原语(Primitive),让O/R映射器和数据库实作可以在进行通讯,但是DbProviderFactories被漏掉了,现在微软在.NET Standard 2.1中补上。简单来说,DbProviderFactories允许函式库和应用程序在编译时,使用特定的ADO.NET提供程式,能够基于名称选择已注册的DbProviderFactory实体,而不需要知道任何特定类型。
微软提到,.NET Standard 1.x和2.0版本专注于公开现有的概念,大部分的工作都还是在.NET Core方面进行,因为.NET Core提供较小的API集合。
