微软宣布 .NET 6 已正式推出,并称其为迄今为止最快的 .NET 版本。
发布公告提到,.NET 6 是首个原生支持 Apple Silicon (Arm64) 的版本,并且还针对 Windows Arm64 进行了改进。.NET 团队构建了一个新的动态配置文件引导优化 (PGO) 系统,该系统可提供仅在运行时才会进行的深度优化。其他变化包括使用 dotnet monitor 和 OpenTelemetry 改进云诊断、提供更强大和更高效的 WebAssembly 支持,以及添加用于 HTTP/3、JSON 处理、数学和直接操作内存的新 API。
作为 LTS 长期支持版本,.NET 6 将会获得 3 年的技术支持。
在 .NET 6 开发周期内,总共包含大约一万个 commit,下面简要介绍新版本的亮点变化。
.NET 6 亮点
- 使用 Microsoft 服务、其他公司运行的云应用程序和开源项目进行了生产压力测试。
- 作为最新的长期支持 (LTS) 版本提供三年的技术支持
- 跨浏览器、云、桌面、IoT 和移动应用程序的统一平台,全部使用相同的 .NET 库,可便捷地共享代码。
- 性能全面提升,尤其是文件 I/O 的性能,减少了执行时间、等待时间和内存使用。
- C# 10 带来了语言改进,例如记录结构 (record structs)、隐式使用和新的 lambda 功能,同时编译器添加了增量源代码生成器。 F# 6 新特性包括基于 task 的异步、管道调试和多项性能改进。
- Visual Basic 在 Visual Studio 体验和 Windows Forms 项目打开体验方面进行了改进。
- 热重载 (Hot Reload) 支持跳过重新构建和重新启动以查看新更改(当应用程序正处于运行状态),此特性支持在 Visual Studio 2022 中使用,并通过 .NET CLI 为 C# 和 Visual Basic 提供了支持。
- 云诊断已通过 OpenTelemetry 和 dotnet monitor 进行改进,现在在生产环境中得到支持,并且可用于 Azure 应用服务。
- JSON API 更强大,并提供源代码生成器器用于串行更高的性能。
- ASP.NET Core 引入了最少的 API,以简化入门体验并提升 HTTP 服务的性能。
- Blazor 组件现在可以从 JavaScript 渲染并与现有的基于 JavaScript 的应用程序集成。
- 用于 Blazor WebAssembly (Wasm) 应用程序的 WebAssembly AOT 编译,以及对运行时重新链接和本机依赖项的支持。
- 使用 ASP.NET Core 构建的单页应用程序现在使用了更灵活的模式,可以与 Angular、React 和其他流行的前端 JavaScript 框架一起使用。
- 添加了 HTTP/3 以便 ASP.NET Core、HttpClient 和 gRPC 都可以与 HTTP/3 客户端和服务器交互。
- 文件 IO 现在支持符号链接,并通过从头开始重新编写
FileStream
大幅提升了性能。 - 通过支持 OpenSSL 3、ChaCha20Poly1305 加密方案和运行时纵深防御缓解措施(特别是W^X和CET),安全性得到了提升。
- 支持为 Linux、macOS 和 Windows(以前仅适用于 Linux)发布单文件应用程序。
- IL 修剪现在更加强大和有效,提供了新的警告和分析器,可确保正确的最终结果。
- 添加了源代码生成器和分析器,可帮助生成更好、更安全和更高性能的代码。
- 源代码构建使 Red Hat 等组织能够从源代码构建 .NET,并向其用户提供自己的构建版本。