Blazor混合应用本质是共享代码+分离宿主,需通过Shared类库共用组件与逻辑,WASM与Server项目独立部署并适配差异,不可单项目切换渲染模式。

Blazor WebAssembly 和 Blazor Server 混合应用不是官方直接支持的“单项目双托管模式”,但可以通过合理架构设计,在同一解决方案中**共用组件、业务逻辑和 API 层**,让不同页面或功能模块分别运行在 WASM 或 Server 模式下——本质是“共享代码 + 分离宿主”,而非一个页面同时跑两种模型。
不要试图在一个项目里切换渲染模式。正确做法是:
不是所有组件都能无修改共用。需主动处理以下差异:
IJSRuntime.InvokeAsync 是异步且网络往返的;Server 中是同步调用(IJSRuntime.InvokeVoidAsync 也走 SignalR)。建议封装抽象层,如定义 IJsHelper 接口,在 Shared 中使用,由各宿主项目提供具体实现localStorage(WASM)或 CascadingParameter + 父组件管理(Server)[Authorize] 可共用,但登录逻辑、Token 获取/刷新必须分开实现不能靠路由配置自动切换,但可通过以下方式“模拟混合”:
Proxy 中间件,把特定路径(如 /admin/*)转发到 Blazor Server 应用,其余走 WASM 托管的后端。用户感知为同一域名下的不同区域<a href="https://yoursite.com/admin">后台管理</a> 直接跳转到 Server 应用地址(可同域部署降低跨源问题)两个项目独立发布,但需协调好基础配置:
HttpClient.BaseAddress 设为后端 API 地址;Server 项目若也调用外部 API,同样配置一致的客户端wwwroot/_content/{PackageId}/ 加载组件包,Server 则走 _content 中间件自动映射,Shared 类库需标记为 StaticWebAssetBasePath(在 .csproj 中加 <staticwebassetbasepath>_content/Your.Shared</staticwebassetbasepath>)基本上就这些。混合不是为了炫技,而是按场景选型:WASM 适合离线、高并发、低敏感前端;Server 适合实时协作、复杂服务器计算、强会话控制。共享代码能大幅降低维护成本,关键在提前划清边界、封装差异。
以上就是Blazor WebAssembly 和 Blazor Server 混合应用怎么做的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号