【.NET新特性·第5篇】.NET 9 速览:云原生与性能之年
2026/6/10 1:22:52 网站建设 项目流程

.NET 9 是微软一年一版本节奏的第二个版本,聚焦云原生应用和性能优化

版本定位

适用版本:.NET 9 | STS(Standard Term Support) 支持周期:18 个月(2024.11 - 2026.05) 前置知识:.NET 8 基础

背景

从 .NET 8 开始,微软采用了"一年一版本"的发布节奏。.NET 9 是这个节奏的第二个版本,它不是 LTS,而是 STS(Standard Term Support),支持周期只有 18 个月。

但这并不意味着 .NET 9 不重要。相反,它带来了许多面向云原生和性能的改进,特别是 AI 构建基块,是微软在 AI 时代的重要布局。

.NET 9 的定位

特性说明
发布时间2024 年 11 月
支持类型STS(Standard Term Support)
支持周期18 个月(至 2026 年 5 月)
C# 版本C# 13
核心主题云原生 + 性能 + AI

LTS vs STS 再回顾

类型.NET 8 (LTS).NET 9 (STS)
支持周期3 年18 个月
稳定性
新特性保守激进
适用场景生产环境尝鲜/个人项目

建议

  • 生产环境优先选择 .NET 8(LTS)

  • 如果想用新特性,可以尝试 .NET 9

  • .NET 10(2025.11)将是下一个 LTS

新特性一览

特性简述实用性
云原生增强Kubernetes 集成、服务发现、Service Mesh⭐⭐⭐⭐⭐
性能大幅提升JIT/GC/Arm64 优化⭐⭐⭐⭐⭐
AI 构建基块Microsoft.Extensions.AI 统一抽象⭐⭐⭐⭐⭐
CET 影子栈安全硬件级控制流保护⭐⭐⭐⭐
BinaryFormatter 移除安全改进,移除不安全序列化⭐⭐⭐⭐⭐
.NET MAUI 9HybridWebView、TitleBar、Native AOT⭐⭐⭐⭐
WPF Fluent 主题现代化 UI 主题⭐⭐⭐
WinForms 深色模式原生深色主题支持⭐⭐⭐
基线 GC 默认启用后台垃圾回收⭐⭐⭐⭐
动态 PGO 改进Profile-Guided Optimization⭐⭐⭐
Lock 类型新的线程同步原语⭐⭐⭐⭐
LINQ 新方法CountBy、AggregateBy⭐⭐⭐⭐
SDK 改进Terminal Logger、工作负载历史⭐⭐⭐
破坏性变更需要注意的升级事项⭐⭐⭐⭐⭐

.NET 9 的核心改进

1. 云原生支持增强

// 更好的 Kubernetes 集成 builder.Services.AddKubernetesConfiguration(); // 服务发现改进 builder.Services.AddServiceDiscovery(); builder.Services.AddHttpClient<WeatherService>( "weather", static client => client.BaseAddress = new("https+http://weather"));

2. 性能大幅提升

.NET 9 在性能方面继续发力:

  • JIT 编译器:更好的内联决策、循环优化

  • GC:动态适应应用大小,基线 GC 默认启用

  • Arm64 优化:针对 ARM 架构的特别优化

// System.Text.Json 性能提升约 25% var json = JsonSerializer.Serialize(data); // LINQ 新方法:CountBy 和 AggregateBy var counts = list.CountBy(x => x.Category); var aggregates = list.AggregateBy(x => x.Type, 0, (acc, item) => acc + item.Value);

3. AI 构建基块

.NET 9 引入了 AI 构建基块,这是最大的亮点:

// Microsoft.Extensions.AI 统一抽象层 builder.Services.AddChatClient(sp => new OpenAIClient(apiKey).GetChatClient("gpt-4")); // 向量存储 builder.Services.AddVectorStore() .AddRedis<VectorRecord>("redis");

核心组件

  • Microsoft.Extensions.AI:统一 AI 抽象层

  • Microsoft.Extensions.VectorData:向量存储

  • Tensor<T>:张量类型

4. CET 影子栈安全

CET(Control-flow Enforcement Technology)是 Intel/AMD 处理器支持的硬件安全特性:

  • 影子栈(Shadow Stack):防止 ROP(Return-Oriented Programming)攻击

  • 间接分支追踪(Indirect Branch Tracking):防止 JOP(Jump-Oriented Programming)攻击

  • .NET 9 默认启用:无需额外配置,运行时自动利用硬件保护

<!-- 在 .csproj 中启用 --> <PropertyGroup> <CETCompat>true</CETCompat> </PropertyGroup>

5. BinaryFormatter 完全移除

.NET 9 彻底移除了BinaryFormatter,这是最重要的安全改进之一:

// ❌ .NET 9 中已移除 var formatter = new BinaryFormatter(); var obj = formatter.Deserialize(stream); // ✅ 替代方案:使用 System.Text.Json var obj = JsonSerializer.Deserialize<MyClass>(stream); // ✅ 替代方案:使用 MessagePack var obj = MessagePackSerializer.Deserialize<MyClass>(buffer); // ✅ 替代方案:使用 protobuf-net var obj = ProtoBuf.Serializer.Deserialize<MyClass>(stream);

6. .NET MAUI 9

MAUI 9 带来多项重要改进:

// HybridWebView - 在 WebView 中运行 Blazor 组件 <HybridWebView Src="wwwroot/index.html" /> // TitleBar - 自定义标题栏 <ContentPage> <NavigationPage.TitleView> <Label Text="My App" /> </NavigationPage.TitleView> </ContentPage> // Native AOT - 编译为原生代码,启动更快

7. WPF Fluent 主题

<!-- 在 App.xaml 中启用 Fluent 主题 --> <Application.Resources> <ResourceDictionary> <ResourceDictionary.MergedDictionaries> <ResourceDictionary Source="pack://application:,,,/PresentationFramework.Fluent;component/Themes/Fluent.xaml" /> </ResourceDictionary.MergedDictionaries> </ResourceDictionary> </Application.Resources>

8. WinForms 深色模式

// 启用深色模式 Application.SetColorMode(ColorMode.Dark); // 或在配置文件中设置 // runtimeconfig.json { "configProperties": { "System.Windows.Forms.ApplicationConfiguration.EnableVisualStylesDarkMode": true } }

9. 新的 Lock 类型

// .NET 9 引入的专用 Lock 类型 private readonly Lock _lock = new(); void DoWork() { lock (_lock) // 自动使用新的 Lock 类型 { // 临界区 } } // 或者显式使用 void DoWorkExplicit() { using var scope = _lock.EnterScope(); // 临界区 }

10. LINQ 新方法

// CountBy - 按键分组计数 var counts = list.CountBy(x => x.Category); // 结果:[(key: "A", count: 3), (key: "B", count: 2)] // AggregateBy - 按键分组聚合 var totals = list.AggregateBy( x => x.Type, 0, (acc, item) => acc + item.Value); // 结果:[(key: "Type1", total: 100), (key: "Type2", total: 200)]

11. 基线 GC 默认启用

.NET 9 将 Background GC 设为默认模式:

<!-- .csproj 中配置 --> <PropertyGroup> <ServerGarbageCollection>true</ServerGarbageCollection> <ConcurrentGarbageCollection>true</ConcurrentGarbageCollection> </PropertyGroup>

12. 动态 PGO 改进

动态 Profile-Guided Optimization 在 .NET 9 中得到增强:

  • 更智能的热点检测

  • 更好的内联决策

  • 减少运行时开销

13. SDK 改进

# Terminal Logger 默认启用 - 输出更简洁 dotnet build # 工作负载历史 - 查看已安装的工作负载 dotnet workload history # 新的构建检查 dotnet build --check

C# 13 新特性预览

.NET 9 搭载 C# 13,带来了 10 个新特性:

特性简述
params 集合params支持Span<T>IEnumerable<T>
新 Lock 类型System.Threading.Lock替代Monitor
\e 转义序列新的转义字符
ref struct 接口ref struct 可以实现接口
allows ref struct泛型支持 ref struct
partial 属性属性和索引器支持 partial
overload 优先级库作者可以指定重载优先级
隐式索引器访问在对象初始化中直接访问索引器
扩展nameof范围nameof 可以使用更多语法元素
partial 类型改进更灵活的 partial 定义

破坏性变更

升级到 .NET 9 时需要注意以下破坏性变更:

变更影响迁移建议
BinaryFormatter 移除使用二进制序列化的代码会报错迁移到 System.Text.Json 或 MessagePack
TLS 1.3 默认启用某些旧服务器可能不支持配置 HttpClient 使用 TLS 1.2
GC 行为变化内存回收模式改变监控应用内存使用
某些 API 标记为 obsolete编译警告按照警告迁移到新 API
// TLS 配置示例 var handler = new HttpClientHandler { SslProtocols = System.Security.Authentication.SslProtocols.Tls12 | System.Security.Authentication.SslProtocols.Tls13 }; var client = new HttpClient(handler);

迁移建议

从 .NET 8 升级到 .NET 9

# 1. 更新 SDK 版本 dotnet --list-sdks # 2. 更新项目文件 <TargetFramework>net9.0</TargetFramework> # 3. 更新 NuGet 包 dotnet list package --outdated # 4. 测试 dotnet test

升级决策

你现在用的版本 → .NET 8 (LTS) ↓ 需要用 AI 构建基块吗? ├── 是 → 升级到 .NET 9 └── 否 → 等待 .NET 10 (2025.11 LTS)

注意事项

  1. STS 支持周期短:18 个月后需要再次升级

  2. AI 组件预览:部分 AI 组件还在预览

  3. Breaking Changes:部分 API 有变更

  4. BinaryFormatter:必须迁移到其他序列化方案

实战场景

适合升级的场景

  • 想尝试 AI 构建基块

  • 需要更好的性能

  • 个人项目或尝鲜

  • 计划迁移到 .NET 10

可以暂缓的场景

  • 生产环境(建议用 .NET 8 LTS)

  • 依赖的包还不支持 .NET 9

  • 项目稳定运行,没有性能问题

  • 使用 BinaryFormatter 且迁移成本高

一句话总结

.NET 9 是云原生与性能之年,AI 构建基块让你的 .NET 应用拥抱 AI 时代,同时 CET 安全和 BinaryFormatter 移除让应用更安全。


官方文档

  • What's new in .NET 9

  • What's new in C# 13

  • What's new in ASP.NET Core 9

  • .NET 9 Breaking Changes

  • .NET MAUI 9


📦示例代码:.NET 新特性巡礼全系列配套示例代码(含 dotnet 8/9/10)

  • GitHub:GitHub - LadyKiller1025/dotnet-feature-tour-demos: .NET Feature Tour - Code Demos (.NET 8/9/10) · GitHub

  • Gitee:https://gitee.com/qakjhzx/dotnet-feature-tour-demos

💬 欢迎点赞、收藏、转发,你的支持是我持续创作的动力!

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询