域名频道资讯站
我们一直在努力制造惊吓

.NET Standard 2.1发布:进一步使.NET实现一致

.NET Standard 2.1发布:进一步使.NET实现一致

更新亮点:

Span<T>。在 .NET Core 2.1 中,开发团队添加了一个类似于数组的类型 Span<T>,它允许以统一的方式表示托管和非托管内存,并支持切片而无需复制。它是 .NET Core 2.1 中与性能相关的大多数改进的核心。由于它允许以更有效的方式管理缓冲区,因此可以帮助减少内存分配和复制。Span<T> 被认为是一种非常基础的类型,因为它需要运行时和编译器支持才能充分利用。

● Foundational-APIs working with spans。虽然 Span 已经可以作为 .NET Standard 兼容的 NuGet 包(System.Memor)使用,但添加此包不能扩展 .NET Standard 类型的成员去使用 span。.NET Core 2.1 添加了许多允许使用 span 的API,如  Stream.Read(Span) 。将 span 带入 .Net Standard 的话,添加这些 API 是很重要的一部分。

Reflection emit。为了提高生产力,.NET 生态系统一直大量使用动态功能,如 reflection(反射)和 reflection emit 。Emit 通常被用作优化性能,以及为代理接口动态生成类型的方法。因此,许多人要求将 reflection emit 包含在 .NET standard 中。以前,开发团队试图通过 NuGet 包提供,结果发现无法使用包来模拟这样的核心技术。使用 .NET Standard 2.1 ,你可以访问轻量级代码生成(LCG)以及reflection emit ,同时添加了两个新的 API ,允许你检查生成代码的能力(RuntimeFeature.IsDynamicCodeSupported)以及生成的代码是否被解释或编译(RuntimeFeature.IsDynamicCodeCompiled)。

SIMD。.NET Framework 和 .NET Core 支持 SIMD 已经有一段时间了,多被用于加速 BCL 中的基本操作,例如字符串比较。开发团队收到了很多在 .NET Standard 中公开这些 API 的请求,因为这些功能需要运行时支持,因此无法作为 NuGet 包提供。

ValueTask 和 ValueTask<T>。在 .NET Core 2.1 中,最大的亮点是对高性能场景的基础知识的支持改进,其中还包含提高 async/await 效率。ValueTask 已经存在,并且如果操作同步,则允许返回结果,而无需分配新的 Task。在 .NET Core 2.1 中,开发团队进一步对其进行改进,使得有一个相应的非泛型 ValueTask 变得很有用。它允许减少分配内存,即使是在必须异步完成操作的情况下也是如此。在 .NET Standard 2.1 中公开这些 API 将使库作者能够作为消费者和生产者从中受益。

DbProviderFactories。在 .NET Standard 2.0 中,开发团队在 ADO.NET 中添加了几乎所有的基础类型(Primitives),以允许 ORM 和数据库实现者进行通信。不幸的是,当时 DbProviderFactories 未在其中,新版本已将其补上。简而言之,DbProviderFactories  允许库和应用在编译时使用特定的 ADO.NET 提供程序而无需知道任何特定类型,方法是在基于名称的已注册 DbProviderFactory 实例中进行选择,例如,可以从配置设置中读取。

General Goodness。自从  .NET Core 开源后,基础类库中已添加许多小功能,例如 System.HashCode 用于组合 hash code 或 System.String 上的新的重载。.NET Core 中大约有800个新成员,且几乎都加入了 .NET Standard 2.1。

更多内容可查阅发行说明:

https://blogs.msdn.microsoft.com/dotnet/2018/11/05/announcing-net-standard-2-1/

本文素材来自互联网

赞(0)
分享到: 更多 (0)

中国专业的网站域名及网站空间提供商

买域名买空间