概览
Blazor目前有两种托管模式,一种是Server-Side模式,一种是WebAssembly模式。官方首先支持的是Service-Side模式,使用WebAssembly模式,需要更新到最新版VS2019。小编目前的精力是更多的专注于Blazor-WebAssembly模式的研究,所以本系列文章只会对Server-Side模式做简要说明。
WebAssembly
WebAssembly模式(也可叫做Client-Side模式),WebAssembly前文已经说了很多了,本文不再做额外讨论。我们主要来看一下ASP.NET Core Blazor是如何实现WebAssembly模式的。Blazor启动后,会将依赖项、.NET运行时以及应用组件下载浏览器,应用将在浏览器上直接运行。其交互如图所示:
同时其UI更新和事件处理也在统一进程中进行,如下图所示:
WebAssembly优点
- Web 程序集在客户端、浏览器内运行,因此可以作为静态文件进行部署。
- 相对于Server-Side模式,当与服务器连接断掉时,依然可以连接,但是涉及到数据库查询等后台功能时,肯定是无法正常工作的。
- 可以减少服务器负载压力。
WebAssembly缺点(此处有误,请看评论)
- 由于其每个交互HTML由服务器端预呈现,这意味Server-Side无法使用静态化方案。同时其往返流程所涉及到的时间消耗,这也只能使得Server-Side模式可能会有更高的延迟。
- 需要始终与服务器建立活动连接,一旦服务器关闭,应用也将立即停止工作。
- 服务器压力会较大。
Server-Side
Server-Side模式于2019年9月发布,其目的是使得ASP.NET Core 应用中在服务器上执行应用。其交互如图所示:
UI 更新、事件处理和 JavaScript 调用是通过 SignalR 连接进行处理。如下图所示:
Server-Side优点
- Blazor 服务器端已经先于客户端呈现了HTML内容。相对于WebAssembly模式要下载很多的文件,Server-Side的启动速度更快,也对搜索引擎更加友好。
- 由于浏览器端只需要专注于HTML相关内容的展示,这意味Server-Side几乎不会遇到什么兼容性。
Server-Side缺点
- 由于其每个交互HTML由服务器端预呈现,这意味Server-Side无法使用静态化方案。同时其往返流程所涉及到的时间消耗,这也只能使得Server-Side模式可能会有更高的延迟。
- 需要始终与服务器建立活动连接,一旦服务器关闭,应用也将立即停止工作。
- 服务器压力会较大。