2026-08-30 · Blazor · 阅读约 6 分钟

Blazor Server 与 Blazor WebAssembly 选型记录

最近在学 Blazor,最开始搞不清楚 Server 模式和 WebAssembly 模式到底该怎么选。官方文档写得比较分散,自己又把两个模板都跑了一遍,对比了实际使用感受,才慢慢理清楚。这篇笔记把两种模式的原理和自己的选型思路整理一下。

一、两种模式的原理区别

简单说,区别在于代码在哪里运行:

二、对比表

维度Blazor ServerBlazor WebAssembly
代码运行位置服务器浏览器(WASM)
首次加载快,只下载页面慢,要下载 dll
网络依赖必须联网加载后可离线
服务器压力所有用户占一条连接客户端分担
调试直接调试服务端代码客户端调试相对麻烦
部署需要 ASP.NET Core 服务器可放静态站点 / CDN

三、最小项目结构

用 .NET CLI 新建一个 Server 项目:

dotnet new blazor -o MyServerApp --interactive Server

新建一个 WASM 项目:

dotnet new blazor -o MyWasmApp --interactive WebAssembly

四、自己的选型结论

五、学习中踩的小坑

刚学 Blazor 时,在组件里写 JS 调用总是报错,后来发现 Server 模式下 JSInterop 的调用是经过 SignalR 序列化的,不能直接传复杂的 .NET 对象引用,只能传可序列化的数据。这个点文档里提得比较少,自己试了几次才搞明白。另外,Server 模式如果服务器网络抖动,页面会重连,做内部系统没问题,做面向公网的交互密集型应用就要权衡。