内容简介:微软在11月5日发布了 .NET Standard 2.1 ,开发团队计划在 .NET Standard 2.1 中添加大约 3000 个 API ,其中很大一部分都是全新的,另外一部分则是添加到标准中的现有 API ,以便进一步使 .NET 实现一致。 更新亮...
微软在11月5日发布了 .NET Standard 2.1 ,开发团队计划在 .NET Standard 2.1 中添加大约 3000 个 API ,其中很大一部分都是全新的,另外一部分则是添加到标准中的现有 API ,以便进一步使 .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/
【声明】文章转载自:开源中国社区 [http://www.oschina.net]
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- Traefik 2.0 实现灰度发布
- Redis 实现发布订阅原理与实践
- 通过发布订阅模式实现的事件委托
- 使用 Jenkins + Nginx 实现预发布
- 利用Zookeeper实现数据发布订阅
- MyOIDC v1.1.0 发布,基于 OIDC 协议的参考实现,根据各类库提供实现参考
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。