主要观点:
- Blazor 是用 C#/.NET 构建 Web 应用的现代框架,可在多种渲染模式下“随处”运行,支持预渲染静态站点、服务器渲染和客户端渲染的 Web 应用,.NET 8 可在组件基础上混合和更改渲染模式。
- 本文重点介绍使用 Blazor Server 渲染 Web 应用,其通过 SignalR 连接在服务器处理更改并将 DOM 更新流式传输到浏览器。
- ASP.NET Web API 是用 C#/.NET 构建 Web API 的现代且成熟框架。
- 可编写 Blazor Server 项目来检索数据,本文聚焦于将 Blazor Server 应用添加到现有模型/控制器 WebAPI 项目中。
关键信息:
- 创建 Web API 项目:使用
dotnet new webapi --name add_blazor_server -controllers命令,包含Controllers目录、add_blazor_server.csproj项目文件、add_Blazor_server.http测试文件、appsettings.json配置文件、Program.cs入口点、WeatherForecase.cs模型对象。 - 创建 Blazor Server 应用:使用
dotnet new blazorserver --name demo_blazorserver命令,包含Data数据访问目录、Pages、Shared、wwwroot用于 UI 体验的目录、Program.cs。 - 集成 Blazor 与 ASP.NET Web API:在 Web API 项目的
Program.cs中添加builder.Services.AddRazorPages(); builder.Services.AddServerSideBlazor();注册 Blazor 服务,在中间件设置中添加 Blazor 管道中间件,复制App.razor等文件,更新FetchData.razor页面以调用 Web API 控制器。 - 在 Blazor Server 中进行 WebAPI 控制器调用:在
Program.cs中添加builder.Services.AddHttpClient();设置 HTTP 客户端,在FetchData.razor中注入NavigationManager和HttpClientFactory,更新OnInitializedAsync()调用以获取数据。
重要细节:
- 在集成过程中可能会遇到与
Data命名空间相关的错误,需删除FetchData.razor中的依赖。 - 可通过
dotnet run运行应用进行测试,在浏览器中可直接访问 API 控制器获取数据,最终实现 Blazor Server 部分调用 Web API 控制器部分。 - 可在GitHub 查看完整代码:https://github.com/dsschnau/add_blazor_server_app_to_aspnet_web_api。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用。你还可以使用@来通知其他用户。