Reactive Extensions for .NET (Rx.NET) 6.0 发布总结
主要观点
Rx.NET 6.0 是 Reactive Extensions for .NET 的最新版本,主要关注兼容性改进、支持最新 .NET 版本以及解决开发者常见痛点。该版本未引入重大新功能,但通过优化现有功能,提升了与当前 .NET 生态系统的对齐度。
关键信息和重要细节
支持最新 .NET 版本
- Rx.NET 6.0 明确支持 .NET 6.0 和 .NET 7.0。虽然 Rx 5.0 已兼容这些版本,但缺乏明确的目标框架,导致用户困惑。Rx 团队移除了对过时框架的支持,并添加了
net6.0目标,与 Microsoft 支持的平台保持一致。 - 尽管
System.ReactiveNuGet 包未包含net7.0目标,但它完全支持 .NET 7.0。目标框架的缺失并不意味着不支持,因为 .NET 7.0 可以运行针对net6.0的包。
- Rx.NET 6.0 明确支持 .NET 6.0 和 .NET 7.0。虽然 Rx 5.0 已兼容这些版本,但缺乏明确的目标框架,导致用户困惑。Rx 团队移除了对过时框架的支持,并添加了
修剪能力改进
- Rx.NET 6.0 在
net6.0目标中引入了修剪(trimming)注解,允许减少System.Reactive.dll组件的大小,从而缩小应用程序体积并提升启动性能。开发者观察到显著的库大小缩减,修剪功能在特定部署场景中具有重要价值。
- Rx.NET 6.0 在
异常处理增强
- Rx 6.0 增强了处理包装任务中未捕获异常的能力。应用程序可以选择静默处理这些异常,这在某些场景下(如应用程序代码已取消订阅后发生异常)非常有用。尽管通常不推荐静默处理异常,但 Rx 库提供了这一选项以支持无法避免的边缘情况。
公开
SingleAssignmentDisposableValue类- 之前标记为内部的
SingleAssignmentDisposableValue类现在已公开,与库中的其他一次性类型保持一致。这一变化为需要此功能的开发者提供了更大的灵活性。
- 之前标记为内部的
代码库与 .NET 工具对齐
- Rx.NET 团队致力于使代码库与当前 .NET 工具无缝集成,确保库能在现代版本的 Visual Studio 和 .NET SDK 上顺利构建。
- 单元测试从 XUnit 迁移到 MSTest,以解决在 UWP 上运行测试的限制。MSTest 提供了更好的 UWP 支持,Rx 长期以来一直服务于该平台。
未来路线图
- Rx 团队已规划了 7.0 版本的路线图,主要解决 UI 框架中的代码膨胀问题。计划将 UI 框架特定功能提取到单独的包中,避免不必要的依赖并减少应用程序大小。通过解耦 Windows Forms、WPF 和 UWP 代码,Rx.NET 将更高效地集成各种 UI 框架,并减少应用程序的整体占用空间。
开发者支持与反馈
- Rx.NET 6.0 在确保兼容性、提升修剪能力以及为未来增强奠定基础方面迈出了一步。团队正在积极解决开放问题,并致力于完善文档,帮助开发者更好地理解和使用 Rx。团队承诺支持最新的 .NET 生态系统,并持续响应用户反馈。
总结
Rx.NET 6.0 通过支持最新 .NET 版本、改进修剪能力、增强异常处理、公开内部类以及与 .NET 工具对齐,提升了开发者的使用体验。未来版本将继续优化代码结构,减少应用程序体积,并更好地支持各种 UI 框架。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用。你还可以使用@来通知其他用户。