微软发布的 .NET 9 继续致力于提升开发者体验、优化性能,并扩展其功能集,以满足现代应用程序开发的需求。无论您是经验丰富的 .NET 开发者,还是刚刚入门,.NET 9 的更新都带来了强大的能力,能够简化工作流程、提升跨平台支持,并增强应用程序性能。
在本文中,我们将探讨 .NET 9 的关键功能,并通过代码示例来便于大家理解。
在 .NET 9 中,本机 AOT 持续发展,使开发者能够将应用程序编译为自包含的可执行文件,优化性能并减小体积。这对于微服务、CLI 工具和无服务器应用尤为重要,因为这些应用对启动时间和内存占用要求较高。
using System;
class Program
{
static void Main()
{
Console.WriteLine("Hello from .NET 9 with Native AOT!");
}
}
dotnet publish -r win-x64 -c Release /p:PublishAot=true
序列化一直是 .NET 开发的重要组成部分。在 .NET 9 中,JSON 源生成器的增强提供了更好的性能和类型安全性,减少了运行时的序列化和反序列化开销。
using System;
using System.Text.Json;
using System.Text.Json.Serialization;
[JsonSerializable(typeof(User))]
publicpartialclassUserJsonContext : JsonSerializerContext
{
}
publicclassUser
{
publicstring Name { get; set; }
publicint Age { get; set; }
}
// 序列化与反序列化
var user = new User { Name = "John", Age = 28 };
string json = JsonSerializer.Serialize(user, UserJsonContext.Default.User);
var deserializedUser = JsonSerializer.Deserialize<User>(json, UserJsonContext.Default.User);
Console.WriteLine(deserializedUser.Name);
对于使用 C++ 旧库或需要底层性能优化的开发者,.NET 9 增强了互操作层,使托管代码调用 C++ 库变得更加容易。
using System;
using System.Runtime.InteropServices;
[DllImport("native.dll", EntryPoint = "Add")]
public static extern int Add(int a, int b);
class Program
{
static void Main()
{
int result = Add(5, 10);
Console.WriteLine($"Result from native library: {result}");
}
}
随着云原生和容器化应用的普及,.NET 9 针对 Linux 和 ARM64 平台进行了优化,确保现代云环境中的部署更加流畅,性能更优。
FROM mcr.microsoft.com/dotnet/runtime:9.0
WORKDIR /app
COPY . .
ENTRYPOINT ["dotnet", "MyApp.dll"]
Minimal API 在 .NET 6 中引入,在 .NET 9 中继续进化,使构建轻量级 Web 服务更加灵活和简洁。
var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();
app.MapGet("/", () => "Welcome to .NET 9!");
app.MapPost("/api/data", (DataModel data) => Results.Ok(data));
app.Run();
record DataModel(string Name, int Value);
dotnet publish -c Release -o ./publish
性能一直是 .NET 版本更新的核心,在 .NET 9 中,开发者可以期待更快的执行速度、更好的垃圾回收(GC),以及改进的线程管理。
using System.Diagnostics;
var sw = Stopwatch.StartNew();
// 执行任务
sw.Stop();
Console.WriteLine($"Elapsed time: {sw.ElapsedMilliseconds}ms");
.NET 9 强调云原生,使其更容易与 Kubernetes 及 OpenTelemetry 等可观测性工具集成。
using OpenTelemetry.Trace;
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddOpenTelemetryTracing(traceBuilder =>
{
traceBuilder
.AddAspNetCoreInstrumentation()
.AddConsoleExporter();
});
var app = builder.Build();
app.MapGet("/", () => "Cloud-Native App with OpenTelemetry in .NET 9");
app.Run();
AOT 编译优化了无服务器环境下的冷启动延迟。
// 本机 AOT 优化无服务器启动时间
Console.WriteLine("Optimized for serverless in .NET 9!");
.NET 9 是一个强大的版本更新,针对现代开发挑战提供了一系列新特性。从本机 AOT 到 JSON 源生成器改进,该平台赋能开发者创建更快、更安全、更可扩展的应用程序。拥抱 .NET 9,不仅可以提升应用程序性能,还能确保与未来技术的长期兼容性。
要了解.NET 9详情,可以请访问微软官方文档 (https://docs.microsoft.com/dotnet/)。
作者:Sundaram Subramanian
译文:csharp.com/article/explore-the-key-features-of-net-9