.NET 11 Preview 1:运行时重大改进,发展方向存疑
微软于 2 月发布了.NET 11 的首个预览版,带来了运行时方面的改进。 Iron Software团队一直在审查.NET 11 Preview 1,其中有一些变化值得.NET开发人员社区重点关注。
太长不看
*异步操作移至运行时——速度更快、更优化、更容易调试。 我们的通用产品迎来好消息。
- CoreCLR 获得 WASM 支持- 取代 Mono,因此浏览器编译的.NET代码运行速度应该明显更快。
*原生 Zstandard 压缩- 我们正在考虑在IronZIP 的底层采用它。
微软正式发布了.NET 11 Preview 1,这是下一个标准期限支持版本(预计于 2026 年 11 月发布)开发周期中的第一个里程碑。
运行时异步:悄然发生的巨大变革
Preview 1 中最重要的更新之一是异步跟踪正在深入运行时本身,而不是完全由编译器处理。
作为背景,异步编程是一种允许应用程序以非阻塞块运行工作的模式,这样整个线程就不会在等待网络调用、文件读取或数据库响应时冻结。 它对现代.NET开发至关重要。 大多数 API、服务和 UI 驱动的工作负载都严重依赖于它。
通过将异步协调移至更靠近运行时层的位置,微软可以同时解决这两个痛点:
调试:重构异步流程。调试器最终应该能够追踪跨越 await 的执行路径,从而恢复当前丢失的上下文。
性能:协调开销更低。运行时优化可以比仅由编译器生成的状态机更积极,从而降低每个任务的成本。
对于分布式服务、云原生 API 和 UI 应用程序而言,这可以转化为全方位的可衡量改进。
CoreCLR 登陆 WebAssembly
到目前为止,编译成 WebAssembly 的.NET应用程序一直依赖于 Mono,Mono 是最初为跨平台兼容性而设计的较旧的运行时。 Mono虽然能用,但它的性能有众所周知的局限性,而且不像CoreCLR那样能从优化投入中受益。
通过此次预览,CoreCLR 获得了 WebAssembly 支持,带来了几项具体的改进:JIT 功能提高了运行时执行速度。 内存管理效率更高。 浏览器托管的.NET应用程序正逐渐接近与本地执行相同的性能。 对于构建Blazor WebAssembly 应用程序或尝试浏览器端.NET工作负载的团队来说,这是整个预览版中最好的升级之一。
这对整个生态系统也至关重要。 针对 WASM 的库和工具,包括基于浏览器的文档处理、渲染和数据操作。
原生 Zstandard 压缩
.NET 11 通过新的 ZstandardStream 实现,为 Zstandard (Zstd) 压缩算法添加了一流的支持。 Zstd 已成为高性能系统的标准,因为它比 Gzip 提供更好的压缩比、更快的解压缩速度以及强大的吞吐量,适用于大规模数据处理。
对于库和工具开发者而言,这消除了第三方绑定带来的摩擦。 现在,大量使用压缩的产品可以直接使用 Zstd。 不难看出,对于像IronZIP这样的工具或类似的流程来说,这种底层技术将非常有用,因为在这些工具中,性能和文件大小都至关重要。
更宏大的主题:.NET 向智能体人工智能的转型
除了运行时方面的改进之外, .NET 11 的战略方向也逐渐清晰起来。 微软正大力推进其所谓的"代理人工智能",即旨在与人工智能代理、Copilot 工作流程和结构化模型上下文进行交互的应用程序。 这包括模型上下文协议支持、AI辅助开发模式以及将.NET应用程序定位为代理可以调用和协调的工具的框架。
这个方向并不出人意料。 整个行业都在向人工智能辅助工作流程发展,微软完全有动力让.NET成为该生态系统中的一流产品。
真正重要的是什么
如果我们抛开路线图之争,纯粹关注实际影响,那么运行时性能的提升才是真正的亮点:
*异步调试最终可能变得易于处理,尤其对于复杂的代码库而言
使用 CoreCLR 取代 Mono 后, WebAssembly 的性能可能会显著提升。
- Zstd 压缩获得一流支持,消除了对第三方的依赖
这些功能并不花哨。 他们不会在会议上获得主题演讲的掌声。 但这些改进能够悄然减少日常开发中的摩擦,从长远来看,这些改进往往比主要功能更重要。
预览版 1 已经展现了.NET生态系统的两个方面:强劲而有意义的运行时进展,以及关于语言方向和平台优先级的日益增多的讨论。 这种紧张关系未必是件坏事。 这通常意味着平台正在朝着人们真正关心的方向发展。
