Blazor带我重玩前端(二)

概览

Blazor目前有两种托管模式,一种是Server-Side模式,一种是WebAssembly模式。官方首先支持的是Service-Side模式,使用WebAssembly模式,需要更新到最新版VS2019。小编目前的精力是更多的专注于Blazor-WebAssembly模式的研究,所以本系列文章只会对Server-Side模式做简要说明。

WebAssembly

WebAssembly模式(也可叫做Client-Side模式),WebAssembly前文已经说了很多了,本文不再做额外讨论。我们主要来看一下ASP.NET Core Blazor是如何实现WebAssembly模式的。Blazor启动后,会将依赖项、.NET运行时以及应用组件下载浏览器,应用将在浏览器上直接运行。其交互如图所示:

Blazor带我重玩前端(二)

同时其UI更新和事件处理也在统一进程中进行,如下图所示:

Blazor带我重玩前端(二)

WebAssembly优点

  • Web 程序集在客户端、浏览器内运行,因此可以作为静态文件进行部署。
  • 相对于Server-Side模式,当与服务器连接断掉时,依然可以连接,但是涉及到数据库查询等后台功能时,肯定是无法正常工作的。
  • 可以减少服务器负载压力。

WebAssembly缺点(此处有误,请看评论)

  • 由于其每个交互HTML由服务器端预呈现,这意味Server-Side无法使用静态化方案。同时其往返流程所涉及到的时间消耗,这也只能使得Server-Side模式可能会有更高的延迟。
  • 需要始终与服务器建立活动连接,一旦服务器关闭,应用也将立即停止工作。
  • 服务器压力会较大。

作者原文评论纠正:“WebAssembly缺点这块,不小心编辑错了,写成了服务端的缺点了,感谢大家的指正。 接下来补充一下。 1. 首次加载时间会比较长,因为它需要下载应用的依赖项、运行时以及 WAT 文件。 2. Blazor WebAssembly 仅适用于较新的浏览器,并且对搜索引擎并不友好。”

Server-Side

Server-Side模式于2019年9月发布,其目的是使得ASP.NET Core 应用中在服务器上执行应用。其交互如图所示:

Blazor带我重玩前端(二)

UI 更新、事件处理和 JavaScript 调用是通过 SignalR 连接进行处理。如下图所示:

Blazor带我重玩前端(二)

erver-Side优点

  • Blazor 服务器端已经先于客户端呈现了HTML内容。相对于WebAssembly模式要下载很多的文件,Server-Side的启动速度更快,也对搜索引擎更加友好。
  • 由于浏览器端只需要专注于HTML相关内容的展示,这意味Server-Side几乎不会遇到什么兼容性。

Server-Side缺点

  • 由于其每个交互HTML由服务器端预呈现,这意味Server-Side无法使用静态化方案。同时其往返流程所涉及到的时间消耗,这也只能使得Server-Side模式可能会有更高的延迟。
  • 需要始终与服务器建立活动连接,一旦服务器关闭,应用也将立即停止工作。
  • 服务器压力会较大。

文章已于2020-07-06修改

原文出处:微信公众号【艾心0626 DotNet技术平台】

原文链接:https://mp.weixin.qq.com/s/NR5_f7zoMcNVU0na6e61mQ

本文观点不代表Dotnet9立场,转载请联系原作者。

发表评论

登录后才能评论