.NET 8 Preview 3 中的 ASP.NET Core 更新
微软最近发布了 .NET 8 Preview 3,该版本为 ASP.NET Core 带来了多项新改进,包括对原生 AOT 的支持、Blazor 的服务器端渲染、在 ASP.NET Core 外部渲染 Razor 组件、Blazor 中的部分支持以及监控 Blazor Server 电路活动等功能。
原生 AOT 支持
在 .NET 8 Preview 3 中,ASP.NET Core 新增了对原生 AOT 的支持。通过原生 AOT,开发者可以将 ASP.NET Core 应用程序发布为独立的原生代码应用程序,从而减少磁盘占用、内存需求和启动时间。微软开发者通过一个简单的 ASP.NET Core API 应用程序进行对比实验,结果显示,使用原生 AOT 发布应用程序后,启动时间减少了 80%,应用程序大小减少了 87%。更多详细数据可在微软的公共基准测试仪表板上查看。
需要注意的是,并非所有 ASP.NET Core 功能和库都与原生 AOT 兼容。.NET 8 是原生 AOT 在 ASP.NET Core 中的初步尝试,目前主要支持使用 Minimal API 或 gRPC 的应用程序,并优先部署在云原生环境中。微软在发布公告中附上了 ASP.NET Core 功能与原生 AOT 兼容性的表格。
Blazor 的服务器端渲染
该预览版本还引入了对使用 Blazor 组件进行服务器端渲染的初步支持。这是 Blazor 统一化工作的开端,旨在使 Blazor 组件能够满足所有 Web UI 需求,包括客户端和服务器端。Blazor 组件可以在无需任何 .cshtml 文件的情况下进行服务器端渲染,框架会自动发现带有路由支持的 Blazor 组件并将其配置为端点。在此模式下,无需 WebAssembly 或 WebSocket 连接,也无需加载任何 JavaScript,每个请求都由对应端点的 Blazor 组件单独处理。
此外,Blazor 组件现在可以在 HTTP 请求上下文之外进行渲染。Razor 组件可以直接渲染为 HTML 字符串或流,无论 ASP.NET Core 的托管环境如何,这对于生成 HTML 片段的场景非常有用。
Blazor 中的部分支持
Blazor 新增了 SectionOutlet 和 SectionContent 组件,用于支持定义内容占位符并在后续填充。部分通常用于在布局中定义占位符,然后由特定页面填充。部分可以通过唯一名称或唯一对象标识符引用。
Blazor Server 电路活动监控
现在可以使用 CircuitHandler 中的新方法 CreateInboundActivityHandler 来监控 Blazor Server 应用程序中的入站电路活动。入站电路活动包括从浏览器发送到服务器的任何活动,例如用户界面事件或 JavaScript 到 .NET 的互操作调用。
社区反馈
ASP.NET Core 的这些改进受到了社区的积极反馈。开发者们特别关注性能优化和 AOT 编译。Ömer Kaya 询问了 Blazor United 是否会在 .NET 8 中推出,微软首席项目经理 Daniel Roth 回应称,Blazor United 是一系列功能的集合,旨在结合服务器端和客户端 Web 开发的优势,包括服务器端渲染、流式渲染、增强的导航和表单处理、按页面或组件添加客户端交互性以及在运行时确定客户端渲染模式。微软已在 .NET 8 Preview 3 中推出了服务器端渲染支持,并计划在后续预览版中推出其他功能,目标是在 .NET 8 中完成所有功能。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用。你还可以使用@来通知其他用户。