ASP.NET Core 9:静态资源处理、Blazor、SignalR 和 OpenAPI 支持的增强

.NET 9 发布与 ASP.NET Core 9 新特性

Microsoft 发布了 .NET 9,其中包含了 ASP.NET Core 9 的新特性。这些特性提升了性能、简化了开发流程,并扩展了框架的功能。此次发布主要优化了静态资源处理、改进了 Blazor 的组件交互、增强了 SignalR 的可观察性和性能,并通过内置的 OpenAPI 支持简化了 API 文档生成。

Blazor 改进

Blazor 在 .NET 9 中得到了多项更新,特别是组件交互和渲染能力的提升。主要改进包括:

  1. 新的运行时 API:开发者可以通过该 API 查询组件的状态,判断组件是否正在以交互模式运行,从而优化性能和更有效地排查问题。
  2. [ExcludeFromInteractiveRouting] 属性:该属性允许为特定页面启用静态服务器端渲染(SSR),适用于需要传统 HTTP 请求周期的页面。

静态资源优化

引入了 MapStaticAssets 功能,用于优化静态资源的交付。该功能自动化了压缩、缓存和版本控制等任务,减少了手动配置的需求。它支持 Blazor、Razor Pages 和 MVC 等框架,适用于应用管理的静态资源,而 UseStaticFiles 仍可用于处理外部或动态资源。

示例代码:

var builder = WebApplication.CreateBuilder(args); 
builder.Services.AddRazorPages(); 

var app = builder.Build(); 
app.UseHttpsRedirection(); 
app.MapStaticAssets();

SignalR 增强

SignalR 新增了对多态 Hub 方法参数的支持,允许方法接受基类以动态处理派生类型。此外,SignalR 的活动跟踪功能得到了改进,为每个 Hub 方法生成详细的事件。还引入了对修剪和 Native AOT(提前编译)的支持,减少了应用体积并提升了客户端和服务器的性能。

Minimal API 改进

Minimal API 新增了错误处理工具,开发者可以使用 TypedResults 返回强类型响应,包括 HTTP 500 错误的 InternalServerError 状态。

示例代码:

var app = WebApplication.Create(); 
app.MapGet("/", () => TypedResults.InternalServerError("An error occurred.")); 
app.Run(); 

OpenAPI 文档生成

内置的 OpenAPI 文档生成功能通过 Microsoft.AspNetCore.OpenApi 包实现。开发者可以为控制器和 Minimal API 生成 OpenAPI 文档,虽然它不包含 SwaggerUI 的界面组件,但开发者仍可以手动添加 SwaggerUI。

Reddit 用户 GaussZ 澄清了这一变化:

OpenAPI 支持并未取代 SwaggerUI,它明确不包含任何 UI 部分,仅取代了 SwaggerGen。开发者仍可以使用 SwaggerUI。

认证与授权更新

认证和授权机制新增了对 OpenID Connect 工作流中 Pushed Authorization Requests (PAR) 的支持。开发者可以自定义 OAuth 和 OpenID Connect 处理器的参数,从而更好地控制认证流程。

总结

.NET 9 的发布为 ASP.NET Core 带来了多项重要更新,涵盖了性能优化、开发流程简化以及功能扩展。开发者可以通过官方发布说明了解更多详细信息。

阅读 154
0 条评论