概览
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 缺点
首次加载时间会比较长, 因为它需要下载应用的依赖项, 运行时以及 WAT 文件.
Blazor WebAssembly 仅适用于较新的浏览器, 并且对搜索引擎并不友好.
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 模式可能会有更高的延迟.
需要始终与服务器建立活动连接, 一旦服务器关闭, 应用也将立即停止工作.
服务器压力会较大.
来源: https://www.cnblogs.com/edison0621/p/13251439.html