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 重新编译您的应用,速度就会更快。

如果您喜欢此文章,请收藏、点赞、评论,谢谢,祝您快乐每一天。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hefeng_aspnet

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值