Asp.Net Core 10.0 中的 Blazor 增强功能

Blazor 一直是 ASP.NET Core 生态系统中最具变革性的技术之一,它使开发人员能够使用 C# 和 .NET 构建现代 Web 应用程序,而无需完全依赖 JavaScript。随着ASP.NET Core 10.0(作为 .NET 10 LTS 版本的一部分)的发布,微软在性能、开发人员效率、灵活性和用户体验方面都显著提升了 Blazor 的性能。此次版本更新不仅着重改进了渲染和资源优化等基础功能,更致力于将 Blazor 打造成构建全栈 Web 应用程序、混合解决方案乃至企业级系统的首选工具。

在本文中,我们将探讨Asp.Net Core 10.0 中最重要的 Blazor 增强功能,它们为何重要,以及它们将如何重塑未来的开发。

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

1. 更快的启动速度和资产加载速度

Blazor for .NET 10 最显著的改进之一是启动时间大幅缩短,尤其对于Blazor WebAssembly应用程序而言更是如此。以往,Blazor WebAssembly 应用程序在运行前需要下载相对较大的框架和库文件,这有时会比 JavaScript 框架带来一些不便。

.NET 10 的增强功能

静态资源指纹识别与压缩:脚本和框架文件现在以预压缩并带有指纹识别的静态资源形式提供。这使得浏览器能够积极地缓存它们,并在会话之间甚至不同的应用程序之间重复使用它们。

预加载支持:开发者现在可以通过预加载 Blazor 的 JavaScript 和 WebAssembly 资源<LinkPreload /> ,从而减少"交互时间"。

原生 AOT 的优势:提前编译可减少有效负载大小并提高 WebAssembly 的执行速度。

影响:即使在低带宽或移动连接下,应用程序也能感觉响应更迅速、交互性更强,这使得 Blazor WebAssembly 在与 React 和 Angular 等 SPA 框架的竞争中更具优势。

2. 持久组件状态

Blazor Server 和 Blazor WebAssembly 在维护应用程序生命周期事件(例如页面重新加载、重新连接或预渲染场景)中的状态时都面临挑战。ASP.NET Core 10 引入了持久化组件状态来解决这个问题。

它的作用

现在,组件可以在页面重新加载和服务器重新连接后保留其状态(例如,表单输入、UI 上下文、过滤器)。

状态不仅可以保存在内存中,还可以序列化以实现用户会话之间的持久性。

影响:这消除了用户刷新浏览器后丢失进度的令人沮丧的体验。对于服务器端 Blazor 应用,这也使得重新连接过程更加流畅。

@page "/counter"

@inject PersistentComponentState ApplicationState

<h3>Counter with Persistent State</h3>

<p>Current count: @currentCount</p>

<button @onclick="IncrementCount">Click me</button>

@code {

private int currentCount;

protected override void OnInitialized()

{

if (ApplicationState.TryTakeFromJson<int>("counter", out var savedCount))

{

currentCount = savedCount;

}

}

private void IncrementCount()

{

currentCount++;

ApplicationState.PersistAsJson("counter", currentCount);

}

}

3. 改进的 Blazor 混合集成

Blazor混合应用(在.NET MAUI或WPF/WinForms中运行Razor组件)越来越受欢迎。在ASP.NET Core 10中,微软改进了BlazorWebView控件及相关的混合功能。

改进措施包括

更佳的资源加载:混合应用程序现在可以受益于与 Blazor WebAssembly 相同的静态资源压缩和缓存改进。

增强的开发者工具:混合应用与热重载更紧密地集成,从而在开发过程中实现更快的迭代。

一致的渲染:WebAssembly、服务器和混合模式之间的渲染差异已降至最低。

影响:混合应用程序现在已成为生产环境中的现实选择,使开发人员能够在桌面、移动设备和 Web 上共享 Blazor 组件。

4. 验证改进

输入验证对于任何严肃的应用程序都至关重要。在 Asp.NET Core 10 中,Blazor 引入了更强大的验证功能:

嵌套对象验证:现在,包含子对象或集合的复杂模型无需自定义变通方法即可进行一致的验证。

跳过验证:开发人员可以在不需要验证的情况下选择性地跳过验证,从而提高性能。

与 JSON 序列化和模型绑定保持一致System.Text.Json :验证行为现在与 JSON 序列化和模型绑定一致,减少了开发人员的困惑。

影响: Blazor 表单更加可靠,所需的样板验证代码更少,从而提高了安全性和开发人员的生产力。

@page "/register"

@using System.ComponentModel.DataAnnotations

<EditForm Model="user" OnValidSubmit="HandleValidSubmit">

<DataAnnotationsValidator />

<ValidationSummary />

<InputText @bind-Value="user.Name" placeholder="Name" />

<InputText @bind-Value="user.Address.City" placeholder="City" />

<InputText @bind-Value="user.Address.ZipCode" placeholder="Zip" />

<button type="submit">Register</button>

</EditForm>

@code {

private User user = new();

private void HandleValidSubmit()

{

Console.WriteLine($"Registered: {user.Name}");

}

public class User

{

Required\] public string Name { get; set; } public Address Address { get; set; } = new(); } public class Address { \[Required\] public string City { get; set; } \[Required, StringLength(5)\] public string ZipCode { get; set; } } } ![](https://i-blog.csdnimg.cn/direct/4e81cba931fb49a18c04ac3c36a02319.png) ### 5. QuickGrid 功能增强 QuickGrid组件在早期版本中引入,并在 ASP.NET Core 10 中进行了重大更新。QuickGrid 是一个轻量级、高性能的数据网格,专为在 Blazor 中显示表格数据而设计。 #### .NET 10 新增功能 RowClass 参数:开发人员现在可以应用条件行样式(例如,以红色突出显示逾期发票)。 虚拟化改进:大型数据集的处理效率更高,滚动更流畅。 扩展列选项:在排序、模板和列定义方面提供更多自定义选项。 影响: Blazor 现在提供了一个开箱即用的、可用于生产的网格解决方案,减少了常见数据驱动型应用程序对第​​三方控件的依赖。 @page "/orders" @using Microsoft.AspNetCore.Components.QuickGrid \Orders\ \ \ \ \ \ @code { private List\ orders = new() { new Order { OrderId = 1, CustomerName = "Alice", TotalAmount = 150 }, new Order { OrderId = 2, CustomerName = "Bob", TotalAmount = 80 } }; private string GetRowClass(Order order) =\> order.TotalAmount \< 100 ? "table-danger" : "table-success"; public class Order { public int OrderId { get; set; } public string CustomerName { get; set; } public decimal TotalAmount { get; set; } } } ### 6. 身份验证和安全更新 Blazor 应用现在受益于 ASP.NET Core 10 在安全性方面的整体改进,尤其是在身份验证方面: 密码支持:使用WebAuthn/FIDO2 的无密码身份验证现在已内置到使用 Asp.Net Core Identity 的 Blazor 应用中。 改进的身份验证指标:开发人员可以获得更丰富的遥测数据(例如,登录失败尝试、令牌刷新、MFA 使用情况)。 一致的 API 响应:API 现在不会将未经身份验证的 API 调用重定向到登录页面,而是正确返回401 Unauthorized 或403 Forbidden 。 影响:更强大、更现代的身份验证使 Blazor 应用更安全,更适合企业使用。 builder.Services.AddIdentityCore\() .AddEntityFrameworkStores\() .AddDefaultTokenProviders() .AddPasswordlessLogin(); // New in .NET 10 ![](https://i-blog.csdnimg.cn/direct/864f9812ff8b41e191eea6e8f5f266d1.png) ### 7. 更好的可观测性和诊断能力 .NET 10 中的 Blazor 引入了新的诊断功能,特别是针对Blazor Server应用程序: 增强日志记录:更细粒度的连接状态、渲染事件和错误日志。 新增指标:身份验证、组件渲染和网络往返时间现在可以开箱即用地跟踪。 与 OpenTelemetry 集成:更轻松地关联客户端/服务器活动,实现分布式追踪。 影响:开发人员和运维人员可以更好地了解性能和可靠性问题,这对于关键任务型应用程序至关重要。 ### 8. 支持服务器发送事件 (SSE) Asp.Net Core 10 引入了对服务器发送事件 (SSE) 的一流支持。Blazor 组件现在可以像使用 SignalR 或 WebSocket 一样使用 SSE 流。 #### 用例 实时仪表盘。 通知。 无需全双工 WebSocket 开销的事件驱动型用户界面。 影响:对于某些实时场景,开发人员现在有了一个比 SignalR 更简单的替代方案,从而降低了复杂性和成本。 @page "/notifications" \Notifications\ \ @foreach (var note in notifications) { \@note\ } \ @code { private List\ notifications = new(); protected override async Task OnInitializedAsync() { using var client = new HttpClient(); using var stream = await client.GetStreamAsync("/notifications/sse"); using var reader = new StreamReader(stream); while (!reader.EndOfStream) { var line = await reader.ReadLineAsync(); if (!string.IsNullOrEmpty(line)) { notifications.Add(line); StateHasChanged(); } } } } ![](https://i-blog.csdnimg.cn/direct/d1f6254746e44d328c586d99c9ff1d0f.png) ### 9. Blazor 在全栈 .NET 开发中的作用 Blazor 在 ASP.NET Core 10 中的演变不仅仅关乎 UI,更在于巩固 Blazor 作为.NET 全栈 Web 开发模型的地位: Minimal APIs + Blazor:Blazor 应用现在可以与 Minimal APIs 更无缝地集成,共享验证、模型和 OpenAPI 元数据。 一致的工具:Visual Studio 2026 提供改进的 Blazor 模板、集成调试和统一的项目系统。 WebAssembly + 原生 AOT:为轻量级、安全的高性能客户端应用程序打开了大门。 ### 10. 开发人员生产力提升 最后,还添加了一些虽小但影响显著的效率提升功能: 热重载稳定性:Blazor 应用的重载更加稳定,减少了 UI 调整期间的重建次数。 组件生命周期钩子:公开更多事件,以便对渲染和数据流进行更精细的控制。 简化的项目模板:更简洁的默认设置让新开发者更容易上手 Blazor。 ### 结论 Blazor 在 ASP.NET Core 10.0 中得到了极大的发展和完善。从更快的启动速度和更好的资源管理,到持久化的组件状态、改进的验证、QuickGrid 的增强、更强大的安全性以及高级诊断,Blazor 现在已成为构建跨 Web、桌面和移动平台的丰富、现代应用程序的理想选择。 这些增强功能使 Blazor 不仅成为一种实验性或小众技术,而且成为一种主流的、企业级的框架,能够与传统的 JavaScript 框架竞争,并在许多情况下超越它们。 随着企业寻求整合技术栈,完全使用 .NET 构建全栈应用程序(在客户端和服务器端共享代码、模型和验证)的能力,是 Blazor 最强大的卖点之一。在 ASP.NET Core 10.0 中,微软进一步强化了这一愿景,使 Blazor 比以往任何时候都更快、更安全、更高效。 **如果您喜欢此文章,请收藏、点赞、评论,谢谢,祝您快乐每一天。**

相关推荐
SuperEugene1 小时前
Excel 上传解析 + 导出实战:Vue+xlsx 避坑指南|Vue生态精选
前端·javascript·vue.js·excel·xlsx·vxetable
rannn_1111 小时前
【Redis|实战篇1】黑马点评|短信登录功能实现
java·redis·后端·缓存·项目
AI_56781 小时前
RabbitMQ消息队列:高可用集群搭建与消息幂等处理
开发语言·后端·ruby
小马_xiaoen1 小时前
常规优化已用尽?小程序体积深层次优化实战!!!
前端·小程序·uniapp
古城小栈1 小时前
Rust 1.94.0 闪亮登台
开发语言·后端·rust
Lee_Yu_Fan1 小时前
修改ElementUI 框架中 TreeSelect树形选择的Icon
前端·elementui
弹简特1 小时前
【JavaEE15-后端部分】SpringBoot配置文件的介绍
java·spring boot·后端
C澒1 小时前
解决多市场业务复用与差异化痛点:Vue Composition API 分层架构方案
前端·架构·前端框架
深念Y2 小时前
一个Bug:Vue Router 4.3.0 导致浏览器窗口无法最小化
前端·vue.js·bug·窗口·最小化·bilibili·视频网站