作者: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 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 构建弹性、可观察和可配置的云原生应用程序的堆栈。它包括一组针对云原生而增强的精选组件,默认情况下包括遥测、弹性、配置和运行状况检查。.NET Aspire结合了先进而简单的本机开发人员体验,使您不管在刚开始还是使用了 100 天都能轻松发现、获取和配置云原生应用程序的基本依赖项。.NET Aspire 的第一个预览版现已发布。
使用 .NET 容器打包您的应用程序比以往更轻松、更安全。每个 .NET 映像都包含一个非 root 用户,从而通过单行配置启用更安全的容器。.NET SDK 工具无需 Dockerfile 即可发布容器映像,并且默认情况下是非 root 的。由于 .NET 基础映像更小,因此可以更快地部署容器化应用程序 - 包括我们映像的新实验变体,这些变体可为本机 AOT 提供真正最小的应用程序。选择使用新的 Chiseled Ubuntu 映像变体进行更多安全强化,以进一步减少攻击面。使用 Dockerfile 或 SDK 工具,为任何架构构建应用程序和容器映像。
将您的 .NET 应用程序编译为本机代码,使用更少的内存并立即启动。无需等待 JIT(即时)编译器在运行时编译代码。无需部署JIT编译器和IL代码。AOT 应用程序只部署应用程序所需的代码。您的应用程序现在可以在无法使用 JIT 编译器的受限环境中运行。
生成式人工智能和大型语言模型正在改变人工智能领域,使开发人员能够在其应用程序中创建独特的人工智能体验。.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 组件与新的和现有应用程序的集成,以帮助您提供创新的用户体验。
现在可以使用各种示例和参考模板,展示模式和实践,以便开发人员轻松入门:
.NET 8 中的 Blazor 可以同时使用服务器和客户端来处理您的所有 Web UI 需求。这是全栈 Web UI!通过专注于优化页面加载时间、可扩展性和提升用户体验的多项新增强功能,开发人员现在可以在同一应用程序中使用 Blazor Server 和 Blazor WebAssembly,在运行时自动将用户从服务器转移到客户端。您的 .NET 代码在 WebAssembly 上的运行速度显然更快,这要归功于新的基于“Jiterpreter”的运行时和新的内置组件。作为.NET 8 中增强整体身份验证、授权和身份管理的一部分,Blazor 现在支持生成完整的基于 Blazor 的身份 UI。
.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 让您的编码体验更加高效和愉快。现在,您可以使用简单而优雅的语法在任何类和结构中创建主构造函数。不再需要样板代码来初始化您的字段和属性。当您使用简洁且富有表现力的语法创建数组、跨度和其他集合类型时会感到高兴。对 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。
我们拥有一组出色的工具,可帮助您在开发工作流程中实现最高效率并充分利用 .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 的最佳开发体验,我们建议您使用最新版本的 Visual Studio 和 Visual Studio Code 的 C# 开发工具包。设置完成后,您应该执行以下操作:
最后,我们想对大家说: