行业新闻

.NET 11 预览版 1:运行时重大改进,但方向性问题也随之而来

微软于 2 月发布了 .NET 11 的首个预览版,带来了运行时性能的提升。 Iron Software 团队近期对 .NET 11 Preview 1 进行了评测,其中有几项变更值得向 .NET 开发者社区重点介绍。

简而言之

  • 异步编程融入运行时——更快、更优化、更易于调试。 这对我们的通用产品来说是个好消息。
  • CoreCLR 支持 WASM —— 取代 Mono,因此浏览器编译的 .NET 代码运行速度应有明显提升。
  • 原生 Zstandard 压缩——我们正在考虑将其内置于 IronZIP 中。

微软已正式发布 .NET 11 Preview 1,这是下一版 .NET Standard 版本开发周期的首个里程碑,该版本计划于 2026 年 11 月发布。

运行时级异步:这场悄然发生的重大变革

Preview 1 的最重要更新之一是,异步跟踪功能正进一步融入运行时本身,而非完全由编译器处理。

背景说明:异步编程是一种允许应用程序以非阻塞方式分批执行任务的模式,从而避免整个线程在等待网络调用、文件读取或数据库响应时陷入僵局。 这是现代 .NET 开发的基础。 大多数 API、服务和基于 UI 的工作负载都高度依赖它。

通过将异步协调机制更紧密地集成到运行时层,微软能够同时解决这两个痛点:

调试:重建异步流程。调试器最终应能追踪跨越 await 语句的执行路径,恢复当前丢失的上下文。

性能:降低协调开销。运行时级别的优化比仅靠编译器生成的状态机更为激进,从而降低了每项任务的成本。

对于分布式服务、云原生 API 和 UI 应用程序而言,这将带来全面且可量化的改进。

CoreCLR 登陆 WebAssembly

迄今为止,编译为 WebAssembly 的 .NET 应用程序一直依赖于 Mono——这一最初为跨平台兼容性设计的旧版运行时。 Mono 虽然可用,但其性能限制众所周知,且未能像 CoreCLR 那样受益于相同的优化投入。

通过此预览版,CoreCLR 获得了对 WebAssembly 的支持,这带来了多项具体改进:JIT 功能提升了运行时执行速度。 内存管理变得更加高效。 基于浏览器的 .NET 应用程序在性能上已日益接近原生应用。 对于正在构建 Blazor WebAssembly 应用程序或尝试浏览器端 .NET 工作负载的团队而言,这是整个预览版中最出色的升级之一。

这对更广泛的生态系统也至关重要。 面向 WASM 的库和工具,包括基于浏览器的文档处理、渲染和数据操作。

原生 Zstandard 压缩

.NET 11 通过新的 ZstandardStream 实现,为 Zstandard (Zstd) 压缩算法提供了原生支持。 Zstd 已成为高性能系统中的标准,因为它比 Gzip 提供更高的压缩率、显著更快的解压速度,以及适用于大规模数据处理的强大吞吐量。

对于库和工具开发者而言,这消除了第三方绑定带来的障碍。 注重压缩效率的产品现在可以原生支持 Zstd。 不难看出,这在 IronZIP 等工具的底层实现中,或是在性能与文件大小均至关重要的类似工作流中,将大有裨益。

更宏大的主题:.NET 向代理式 AI 的转型

除了运行时改进之外,.NET 11 的战略方向也日益清晰。 微软正大力推动其所谓的"代理式 AI"(agentic AI),即旨在与 AI 代理、Copilot 工作流以及结构化模型上下文进行交互的应用程序。 这包括对模型上下文协议(Model Context Protocol)的支持、AI 辅助开发模式,以及将 .NET Framework 应用程序定位为代理可调用和协调的工具的框架。

这一方向并不令人意外。 整个行业正朝着人工智能辅助的工作流方向发展,微软有充分的动力将 .NET 打造成该生态系统中的核心组件。

这里真正重要的是

如果暂且搁置路线图的争论,仅关注实际影响,那么运行时性能的提升才是真正的亮点:

  • 对于复杂的代码库,异步调试终于变得可控
  • 随着 CoreCLR 取代 Mono,WebAssembly 的性能可能会显著提升
  • Zstd 压缩获得原生支持,消除了对第三方依赖

这些并非花哨的功能。 它们不会在会议主题演讲中赢得热烈掌声。 但正是这类改进,能悄然减少日常开发中的阻力,而从长远来看,它们往往比那些引人注目的核心功能更为重要。

预览版 1 已展现了 .NET 生态系统的双重面貌:既在运行时取得了显著且有意义的进展,同时也引发了关于语言发展方向和平台优先级的日益热烈的讨论。 这种张力未必是坏事。 这通常意味着该平台的发展方向正朝着人们真正关心的方向迈进。