作者:Gaurav Seth
排版:Alan Wang
请立即下载 .NET 8!
我们很高兴地宣布从今天开始 .NET 8 正式发布,它是世界领先的开发平台之一的最新 LTS 版本。.NET 8 提供了数以千计的性能、稳定性和安全性改进,以及平台和工具增强功能,有助于提高开发人员的工作效率和创新速度。在为期三天(11 月 14 日至 16 日)的 .NET Conf 2023 上,.NET 团队、我们的合作伙伴和 .NET 社区将讨论 .NET 8 中的新增功能以及人们使用 .NET 构建的内容,以满足未来的需求。快来加入我们吧!
在这个版本中,.NET 重塑了我们构建可按需扩展的智能、云原生应用程序和高流量服务的方式。无论您是部署到 Linux 还是 Windows,使用容器还是您选择的云应用程序模型,.NET 8 都可以让您更轻松地构建这些应用程序。它包括一组经过验证的库,目前 Microsoft 的许多大规模服务都在使用这些库,可以帮助您应对可观察性、弹性、可扩展性、可管理性等方面的基本挑战。
将大型语言模型(LLM,如 OpenAI 的 GPT)直接集成到您的 .NET 应用程序中。Blazor 使用单个强大的组件模型来处理您的所有 Web UI 需求。使用 .NET MAUI 将您的移动应用程序部署到最新版本的 iOS 和 Android。发现新的语言增强功能,使您的 C# 12 代码更加简洁和富有表现力。
让我们看看 .NET 8 中的新增功能。
无与伦比的性能 – 体验迄今为止最快的 .NET
.NET 8在整个堆栈中带来了数千项性能改进。默认情况下会启用一种名为动态配置文件引导优化(PGO)的新代码生成器,它可以根据实际使用情况优化您的代码,并且可以将应用程序的性能提高最多20%。现在支持的 AVX-512 指令集使您能够对 512 位数据向量执行并行操作,这意味着您可以在更短的时间内处理更多的数据。原始类型(数字及其他类型)现在实现了新的可格式化和可解析接口,这使它们能够直接格式化和解析为 UTF-8,而无需任何转码开销。
每年我们都会讨论 .NET 的性能提升。今年,我们继续致力于将 .NET 的性能推向新的高度。从 .NET 8 的最新 TechEmpower 基准测试中,我们看到 JSON API 场景改进了 18%,ASP.NET Core Minimal API 每秒可处理近一百万个请求。
Fortunes 场景更接近实际工作负载,包括数据库访问和服务器端 HTML 渲染。在这个测试中,我们看到 ASP.NET Core 的性能提升了 24%,现在每秒处理的请求数超过 300K。
.NET Aspire – 一个用于构建可观察、生产就绪的云原生应用程序的固执己见的堆栈
.NET Aspire 是一个使用 .NET 构建弹性、可观察和可配置的云原生应用程序的堆栈。它包括一组针对云原生而增强的精选组件,默认情况下包括遥测、弹性、配置和运行状况检查。.NET Aspire结合了先进而简单的本机开发人员体验,使您不管在刚开始还是使用了 100 天都能轻松发现、获取和配置云原生应用程序的基本依赖项。.NET Aspire 的第一个预览版现已发布。
.NET 8 容器增强功能 – 更安全、更紧凑、更高效
使用 .NET 容器打包您的应用程序比以往更轻松、更安全。每个 .NET 映像都包含一个非 root 用户,从而通过单行配置启用更安全的容器。.NET SDK 工具无需 Dockerfile 即可发布容器映像,并且默认情况下是非 root 的。由于 .NET 基础映像更小,因此可以更快地部署容器化应用程序 - 包括我们映像的新实验变体,这些变体可为本机 AOT 提供真正最小的应用程序。选择使用新的 Chiseled Ubuntu 映像变体进行更多安全强化,以进一步减少攻击面。使用 Dockerfile 或 SDK 工具,为任何架构构建应用程序和容器映像。
本机 AoT – 迈向更高密度可持续计算的旅程
将您的 .NET 应用程序编译为本机代码,使用更少的内存并立即启动。无需等待 JIT(即时)编译器在运行时编译代码。无需部署JIT编译器和IL代码。AOT 应用程序只部署应用程序所需的代码。您的应用程序现在可以在无法使用 JIT 编译器的受限环境中运行。
人工智能 – 将 AI 融入您的 .NET 应用程序
生成式人工智能和大型语言模型正在改变人工智能领域,使开发人员能够在其应用程序中创建独特的人工智能体验。.NET 8通过 .NET SDK 中一流的开箱即用 AI 功能以及与多种工具的无缝集成,使您可以轻松利用 AI。
.NET 8 为 System.Numerics
库带来了多项增强功能,以提高其与生成式 AI 工作负载的兼容性,例如集成 Tensor Primitive。随着人工智能应用程序的兴起,涌现出了新的工具和 SDK。我们与众多内部和外部合作伙伴合作,例如 Azure OpenAI、Azure Cognitive Search、Milvus、Qdrant 和 Microsoft Teams,以确保 .NET 开发人员可以通过各自的 SDK 轻松访问各种 AI 模型、服务和平台。此外,开源 Semantic Kernel SDK 简化了这些 AI 组件与新的和现有应用程序的集成,以帮助您提供创新的用户体验。
现在可以使用各种示例和参考模板,展示模式和实践,以便开发人员轻松入门:
- 客户聊天机器人
- 检索增强型生成
- 使用 Azure AI 服务开发应用程序
Blazor – 使用 .NET 构建全栈 Web 应用程序
.NET 8 中的 Blazor 可以同时使用服务器和客户端来处理您的所有 Web UI 需求。这是全栈 Web UI!通过专注于优化页面加载时间、可扩展性和提升用户体验的多项新增强功能,开发人员现在可以在同一应用程序中使用 Blazor Server 和 Blazor WebAssembly,在运行时自动将用户从服务器转移到客户端。您的 .NET 代码在 WebAssembly 上的运行速度显然更快,这要归功于新的基于“Jiterpreter”的运行时和新的内置组件。作为.NET 8 中增强整体身份验证、授权和身份管理的一部分,Blazor 现在支持生成完整的基于 Blazor 的身份 UI。
.NET MAUI – 提升性能、可靠性和开发人员体验
.NET MAUI 为您提供单一项目系统和单一代码库来构建 WinUI、Mac Catalyst、iOS 和 Android 应用程序。本机 AOT(实验性)现已在 iOS 等平台上支持。适用于 .NET MAUI 的新 Visual Studio Code 扩展为您提供了开发跨平台 .NET 移动和桌面应用程序所需的工具。现在支持 Xcode 15 和 Android API 34,允许您针对最新版本的 iOS 和 Android进行开发。在性能、控件和 UI 元素以及特定于平台的行为方面进行了大量的质量改进,例如桌面交互添加了更好的单击处理、键盘侦听器等。
C# 12 功能 – 简化语法以提高开发人员的工作效率
C# 12 让您的编码体验更加高效和愉快。现在,您可以使用简单而优雅的语法在任何类和结构中创建主构造函数。不再需要样板代码来初始化您的字段和属性。当您使用简洁且富有表现力的语法创建数组、跨度和其他集合类型时会感到高兴。对 lambda 表达式中的参数使用新的默认值。不再需要重载或空检查来处理可选参数。您甚至可以使用 using
别名指令为任何类型添加别名,而不仅仅是命名类型!
集合表达式
// 创建一个 list:
List<int> a = [1, 2, 3, 4, 5, 6, 7, 8];// 创建一个 span
Span<char> b = ['a', 'b', 'c', 'd', 'e', 'f', 'h', 'i'];// 使用扩展运算符来连接
int[] array1 = [1, 2, 3];
int[] array2 = [4, 5, 6];
int[] array3 = [7, 8, 9];
int[] fullArray = [..array1, ..array2, ..array3]; // contents is [1, 2, 3, 4, 5, 6, 7, 8, 9]
有关 C# 最新版本的更多信息,请参阅宣布 C# 12。
Visual Studio 系列工具支持 .NET 8
我们拥有一组出色的工具,可帮助您在开发工作流程中实现最高效率并充分利用 .NET 8。Visual Studio 2022 17.8 版本与 .NET 8 一起发布,支持 .NET 8、C# 12 语言增强功能以及各种新的生产力功能。如果您正在学习和(或)想要快速熟悉运行时,VS Code 和 C# 开发工具包是开始使用 .NET 8 的好方法,并且可以在 Linux、macOS 或 GitHub Codespaces 中使用。适用于 .NET 的新 GitHub Codespaces 模板附带 .NET SDK 和一组配置的扩展,是开始使用 .NET 8 的最快方法之一。
.NET 8 中的附加功能
- ASP.NET Core。简化单页应用程序(SPA)和 Blazor 的身份,提供基于 cookie 的身份验证、预构建的 API、令牌支持和新的身份 UI。并通过表单绑定增强最小 API,防伪支持防止跨站点请求伪造(XSRF/CSRF),以及 asParameters 支持使用 Open API 定义进行参数绑定。
- ASP.NET Core 工具。路由语法突出显示、自动完成和分析器可帮助您创建 Web API。
- Entity Framework Core。提供新的“复杂类型”作为值对象、原始集合以及 SQL Server 对分层数据的支持。
- NuGet。帮助您审核项目和解决方案中的 NuGet 包是否存在任何已知的安全漏洞。
- .NET Runtime。为 WebAssembly (WASM) 和 Android 带来新的 AOT 编译模式。
- .NET SDK。恢复终端构建输出和生产就绪默认值。
- WPF。支持 OpenFolderDialog并在 RDP 中启用硬件加速
- ARM64。通过与 ARM 工程师合作,显著增强了 ARM64 平台的功能并提高了代码质量。
- Debugging。显示调试摘要并为常用的 .NET 类型提供简化的调试代理。
- System.Text.Json。帮助填充只读成员、自定义未映射成员处理并改进本机 AOT 支持。
- .NET Community Toolkit。加速构建 .NET 库和应用程序,同时确保它们精简且兼容 AOT(包括 MVVM 源生成器!)
- Azure。通过 Azure 的 PaaS 服务(例如适用于 Windows 和 Linux 的应用服务、静态 Web 应用、Azure Functions 和 Azure 容器应用)支持 .NET 8。
- F# 8。包括重大的语言更改、新的诊断、可用性改进和项目编译中的性能增强,以及对 FSharp.Core 标准库的升级。
- .NET 8 中的新增功能。查看我们的文档以了解其他所有内容!
.NET 8 入门
为了获得 .NET 8 的最佳开发体验,我们建议您使用最新版本的 Visual Studio 和 Visual Studio Code 的 C# 开发工具包。设置完成后,您应该执行以下操作:
- 尝试新功能和 API。下载 .NET 8并在我们的问题跟踪器中报告问题。
- 测试您当前应用程序的兼容性。了解您的应用是否受到 .NET 8 中默认行为更改的影响。
- 通过选择加入更改来测试您的应用程序。.NET 8 具有可选择的行为更改,这些更改仅在启用时影响您的应用程序。尽早了解和评估这些更改非常重要,因为它们可能会在下一个版本中成为默认设置。
- 使用升级助手更新您的应用程序。使用升级助手,只需点击几下即可升级您的应用程序。
- 了解你受到支持。.NET 8 得到 Microsoft 的正式支持,作为长期支持(LTS)版本,支持期限为三年。
- 奖励:.NET 8 的 eShop 示例。使用我们的新 eShop 示例(现已针对 .NET 8 进行更新)遵循所有最佳编码和架构实践!
庆祝 .NET 8发布
- .NET Conf 2023。请于2023 年 11 月 14 日至 16 日与我们一起庆祝 .NET 8 发布!
- .NET 的下一步是什么?参与并了解有关 .NET 8 和下一版本 .NET 的最新消息。
- 获得 C# 认证。通过 freeCodeCamp C# 认证获得荣誉徽章。
- 学习 .NET 8。为初学者和高级 .NET 开发人员提供针对 .NET 8更新的免费教程、视频、课程等。
- 请参阅开发者故事。查看开发人员迁移到现代 .NET 的成功案例。
- 了解为什么选择 .NET?阅读我们最近关于 .NET 便利性的博客系列。
.NET❤️我们的社区
最后,我们想对大家说: