.NET 10 是微软开发的.NET框架的最新版本,它旨在提供更好的性能、更高的安全性和更丰富的功能。以下是.NET 10的一些主要特点:1. **性能提升**:.NET 10 在性能方面进行了大量优化,包括改进的JIT编译器、更快的垃圾回收器以及更高效的

摘要:上一篇文章给大家分享了 .NET 10 & C# 14 New Features 新增功能介绍-.NET CLI工具改进 本篇文章接续给大家分享ASP.NET Core的一些增强: 一、Minimal API 内置参
上一篇文章给大家分享了 .NET 10 & C# 14 New Features 新增功能介绍-.NET CLI工具改进 本篇文章接续给大家分享ASP.NET Core的一些增强: 一、Minimal API 内置参数验证(Built-in validation for Minimal APIs) 在以前的版本中,Minimal API 默认不会自动执行 DataAnnotations 验证,通常需要: 手动调用 Validator 使用 FluentValidation 或写 Middleware / Filter 而在 .NET 10 中,Minimal API 可以自动执行模型验证,和 MVC Controller 的行为一致。 使用 DataAnnotations注解: public class UserDto { [Required] public string Name { get; set; } [Range(1,120)] public int Age { get; set; } } Minimal API: app.MapPost("/users", (UserDto dto) => { return Results.Ok(dto); }); 如果请求: { "age": 200 } 系统会 自动返回 400: { "type": "https://tools.ietf.org/html/rfc9110#section-15.5.1", "title": "One or more validation errors occurred.", "errors": { "Name": ["The Name field is required."], "Age": ["The field Age must be between 1 and 120."] } } 这个自动校验的触发机制是这样的 ASP.NET Core 会在 Endpoint Binding 阶段执行: Request Body → Model Binding DataAnnotations Validation 如果失败 → 自动返回 400 ValidationProblem 如果成功 → 进入 Handler 二、新增了对 Server-Sent Events(SSE) 的原生支持 在 ASP.NET Core 的 .NET 10 中,新增了对 Server-Sent Events(SSE) 的原生支持,可以通过 TypedResults.ServerSentEvents 直接返回 实时数据流。 这让 Minimal API 实现实时推送变得非常简单,无需使用 WebSocket 或 SignalR。 一行代码搞定 TypedResults.ServerSentEvents() 自动: 设置 Content-Type 处理数据流格式 处理 Flush 示例代码 app.MapGet("/time", () => { async IAsyncEnumerable<string> GetTimeStream() { while (true) { yield return DateTime.Now.ToString("HH:mm:ss"); await Task.Delay(1000); } } return TypedResults.ServerSentEvents(GetTimeStream()); }); 前端JS代码 const source = new EventSource("/time"); source.onmessage = (event) => { console.log("Server time:", event.data); }; 同时,.NET 10 支持 Typed SSE Event: app.MapGet("/events", () => { async IAsyncEnumerable<SseItem<string>> Stream() { while (true) { yield return new SseItem<string>( DateTime.Now.ToString(), eventType: "time" ); await Task.Delay(1000); } } return TypedResults.ServerSentEvents(Stream()); }); 三、OpenAPI 3.1支持 OpenAPI Specification 是 REST API 的行业标准规范。 OpenAPI 3.1 的核心变化: MiniAPI代码示例 var builder = WebApplication.CreateBuilder(args); builder.Services.AddOpenApi(); var app = builder.Build(); app.MapGet("/stations", () => { return new[] { new { Id = 1, Name = "Station A" }, new { Id = 2, Name = "Station B" } }; }); app.MapOpenApi(); app.Run(); 访问:/openapi/v1.json 返回得到 OpenAPI 3.1 文档。 同时YAML也得到了支持 在 API 管理和云平台中,很多工具更喜欢 YAML 格式。 /openapi/v1.yaml 示例返回 openapi: 3.1.0 info: title: Charging API version: 1.0.0 paths: /stations: get: responses: "200": description: OK 启用YAML输出 builder.Services.AddOpenApi(options => { options.AddDocumentTransformer((doc, ctx, ct) => { doc.Info.Title = "Charging Platform API"; return Task.CompletedTask; }); }); 这个对于AI Function Call非常有用 现在很多 AI Agent 使用 OpenAPI 作为 Tool Schema。 .NET 10 的 OpenAPI 3.1 + YAML 支持,使 ASP.NET Core API 在标准化、AI集成、API网关和DevOps场景下更加现代化。 以上分享给大家。 周国庆 20260316