ASP.NET Core 10.0 的主要变化
ASP.NET Core 10.0 是 .NET 10 版本的一部分,引入了多项新功能和增强功能。重点关注的领域包括 Blazor、OpenAPI 支持和 Minimal API 的改进,以及安全性和性能的增强。
如果您喜欢此文章,请收藏、点赞、评论,谢谢,祝您快乐每一天。
1. Blazor 增强功能
Blazor WebAssembly 性能:ASP.NET Core 10.0 包含针对 Blazor WebAssembly 的重大性能优化,例如预加载静态资产以改善启动时间以及增强性能分析的诊断。
表单验证:新版本提供了改进的表单验证,包括全对象图验证,从而允许更复杂和更强大的验证逻辑。
状态持久性:Blazor Server 现在包含持久组件状态的功能,从而提高了弹性和可扩展性。
QuickGrid:QuickGrid 组件已更新,具有RowClass条件样式和改进的导航等新功能,可防止在同一页面更新时出现不必要的页面滚动。
BlazorQuickGrid RowClass
RowClassBlazor 组件上的新参数QuickGrid允许轻松地对行进行条件样式设置。这简化了 UI 逻辑,将其从 CSS 选择器移至 C# 代码。
HTML
<QuickGrid Items="items" RowClass="GetRowCssClass">
<PropertyColumn Property="@(p => p.Name)" Title="Name" />
<PropertyColumn Property="@(p => p.IsArchived)" Title="Archived" />
</QuickGrid>
@code {
private string GetRowCssClass(MyGridItem item)
{
return item.IsArchived ? "archived-row" : null;
}
}
2. OpenAPI 和最小 API
OpenAPI 3.1 支持:ASP.NET Core 10.0 全面支持OpenAPI 3.1,从而提供更全面的 API 文档。这包括符合 JSON Schema 草案 2020-12 的要求,并能够以 YAML 格式提供 OpenAPI 文档。
最小 API 验证:最小 API 现已内置验证支持。您可以使用DataAnnotations参数和模型的属性定义验证规则,并在验证失败时自动返回 400 Bad Request 响应。
简化的 API 开发:极简 API 得到了进一步增强,使构建轻量级 Web 服务更加轻松。新功能允许您将服务注入极简 API,而无需使用[FromServices]属性。
app.MapPost("/person", ([Validate] Person person) =>
{
// The framework handles validation. This code only runs if the person object is valid.
return Results.Created($"/person/{person.Id}", person);
});
public record Person(
[Required] int Id,
[StringLength(50)] string Name,
[EmailAddress] string Email
);
// Old way (pre-10.0)
app.MapGet("/users", ([FromServices] IUserService userService) =>
{
return userService.GetAllUsers();
});
// New way (10.0)
app.MapGet("/users", (IUserService userService) =>
{
return userService.GetAllUsers();
});
3. 身份验证和安全
添加了新功能和 API,使应用程序更安全、更易于管理。
无密码身份验证:增强了对密码(WebAuthn + FIDO2)的支持,允许使用生物识别或硬件安全密钥进行安全的无密码登录。
内置指标:新的内置指标提供了一种监控关键身份验证和授权事件的方法,例如登录、注销和授权失败,这对于现代可观察性至关重要。
API 身份验证行为: API 端点现在默认返回未经身份验证的请求的401状态403代码,符合常见的 API 最佳实践并防止意外重定向到登录页面。
开放重定向保护:一种新的RedirectHttpResult.IsLocalUrl辅助方法可帮助开发人员在重定向到 URL 之前验证 URL,从而有效防止开放重定向攻击。
安全性始终是 .NET 新版本的重中之重,.NET 10 也不负众望。其中一项突出的功能是对密钥的增强支持。在密码始终存在安全风险的时代,密钥通过 WebAuthn 和 FIDO2 标准提供了一种更安全、更能抵御网络钓鱼的替代方案。借助全新简化的 API 和更新的模板,实现无密码身份验证现在比以往任何时候都更加轻松。这是迈向更安全网络的关键一步,对开发者和用户来说都是双赢的。
4. 开发人员的生产力和绩效
.NET 10 运行时和 ASP.NET Core 框架的一般改进旨在提高开发人员的工作效率和应用程序性能。
路由语法突出显示: Blazor 中的属性[Route]现在包括语法突出显示,以帮助开发人员可视化和理解路由模板的结构。
增强诊断:诊断工具已得到改进,新选项允许开发人员抑制某些异常处理程序诊断,以实现更清晰的日志记录。
服务器发送事件 (SSE):添加了对服务器发送事件 (SSE) 的支持,提供了一种实现实时数据流的简单方法,而无需 WebSockets 的复杂性。
.localhost 域名支持:内置的 Kestrel Web 服务器现在将.localhost顶级域名识别为安全环回地址,从而通过清晰的域名分离简化本地开发。
在性能方面,我们从未停止改进。内置 Web 服务器 Kestrel 已在底层进行了更多优化。虽然您可能无法在代码中直接看到这些改进,但它们正在默默地提升您的应用程序速度和内存利用效率。这种“免费性能”是 .NET 平台的一大特色——您只需使用新的 SDK 重新编译您的应用,速度就会更快。
如果您喜欢此文章,请收藏、点赞、评论,谢谢,祝您快乐每一天。