Blazor WebAssembly

应用资产作为静态文件部署到可为客户端提供静态内容的 Web 服务器或服务中。

Blazor server VS Blazor WebAssembly

托管的 Blazor WebAssembly Client 应用通常使用 Web API 调用或 SignalR(结合使用 ASP.NET Core SignalR 和 Blazor)通过网络与后端 Server 应用交互。

blazor.webassembly.js 脚本由框架和句柄提供:

  • 下载 .NET 运行时、应用和应用依赖项。
  • 初始化运行应用的运行时。

Blazor WebAssembly 托管模型具有以下优点:

  • 应用下载到客户端后即可正常运行。
  • 可充分利用客户端资源和功能。
  • 工作可从服务器转移到客户端。
  • 无服务器部署方案可行,例如通过内容分发网络 (CDN) 为应用提供服务的方案。

Blazor WebAssembly 托管模型具有以下局限性:

  • 应用仅可使用浏览器功能。
  • 需要可用的客户端硬件和软件(例如 WebAssembly 支持)。
  • 下载项大小较大,应用加载耗时较长。
  • 例如,.NET Standard 支持和调试方面存在限制。

若要创建 Blazor WebAssembly 应用,请参阅 用于 ASP.NET Core Blazor 的工具。

对于 Visual Studio 中的 Docker 支持,请右键单击托管的 Blazor WebAssembly 解决方案的 Server 项目,然后选择“添加” > “Docker 支持”。

Blazor Server

UI 更新、事件处理和 JavaScript 调用是通过 SignalR 连接进行处理。

Blazor server VS Blazor WebAssembly

ASP.NET Core 应用会引用应用的 Startup 类以添加以下内容:

  • 服务器端服务。
  • 用于请求处理管道的应用。

客户端应用负责根据需要保持和还原应用状态。

Blazor Server 托管模型具有以下优点:

  • 下载项大小明显小于 Blazor WebAssembly 应用,且应用加载速度快得多。
  • 应用可充分利用服务器功能,包括使用任何与 .NET Core 兼容的 API。
  • 服务器上的 .NET Core 用于运行应用,因此调试等现有 .NET 工具可按预期正常工作。
  • 例如,Blazor Server 应用适用于不支持 WebAssembly 的浏览器以及资源受限的设备。
  • 应用的 .NET/C# 代码库(其中包括应用的组件代码)不适用于客户端。

 重要

有关更多信息,请参见连接到服务器一节。

Blazor Server 托管模型具有以下局限性:

  • 每次用户交互都涉及到网络跃点。
  • 如果客户端连接失败,应用会停止工作。
  • 服务器必须管理多个客户端连接并处理客户端状态。
  • 无服务器部署方案不可行,例如通过内容分发网络 (CDN) 为应用提供服务的方案。

若要创建 Blazor Server 应用,请参阅 用于 ASP.NET Core Blazor 的工具。

对于 Visual Studio 中的 Docker 支持,请右键单击 Visual Studio 中的项目,然后选择“添加” > “Docker 支持” 。

与服务器呈现的 UI 进行比较

这两种模型都使用 Razor 语言描述 HTML 内容,但两者在标记的呈现方式上差别显著。

出现另一个对该页面的请求时,例如,服务器验证失败并显示验证摘要时:

  • 整个页面将再次重新呈现为 HTML 文本。
  • 页面会发送到客户端。

二进制格式可以:

  • 转换为 HTML 文本(预呈现 † 期间)。
  • 用于在定期呈现期间高效更新标记。

预呈现会使应用对用户的响应更加迅速。

Blazor 中的 UI 更新由以下内容触发:

  • 用户交互,例如选中按钮。
  • 应用触发器,例如计时器。

差异以二进制格式发送到客户端,并由浏览器应用。

要了解如何创作 Blazor Server 应用以确保充分使用服务器内存,请参阅 ASP.NET Core Blazor Server 的威胁缓解指南。

线路

Blazor 客户端发现 SignalR 连接已断开时,它会尝试使用新的 SignalR 连接来重新连接到服务器。

在 Blazor Server 应用中,若服务器要管理浏览器屏幕,则每个浏览器屏幕均需要独立线路和组件状态的独立实例。

Blazor Server 会将断开连接的路线存储一段时间(可配置),以便客户端重新连接。

有关详细信息,请参阅 ASP.NET Core Blazor SignalR 指南。

UI 延迟

因此,UI 延迟是网络延迟和处理操作时的服务器延迟的总和。

如果是通过 Internet 部署的应用,用户可能会更容易感受到延迟,用户分布广泛时感受尤为明显。

内存使用率增大会导致垃圾收集频繁或内存分页到磁盘,两者均会降低应用性能,进而增大 UI 延迟。

有关 SignalR 和 Blazor 的详细信息,请参阅以下内容:

  • 托管和部署 ASP.NET Core Blazor Server
  • ASP.NET Core Blazor Server 的威胁缓解指南

连接到服务器

只要客户端的状态仍在服务器的内存中,客户端会话即可恢复,且不会失去状态。

使用多个后端服务器的 Blazor Server 应用应实现粘滞会话,从而建立 SignalR 连接。

有关详细信息,请参阅 托管和部署 ASP.NET Core Blazor Server。

有关详细信息,请参阅使用应用程序请求路由实现 HTTP 负载均衡。

相关文章:

  • 2020-02-22
  • 2020-05-21
  • 2020-05-27
  • 2020-06-05
  • 2020-05-14
  • 2021-07-05
猜你喜欢
  • 2020-05-09
  • 2021-09-01
  • 2022-02-12
  • 2022-12-23
  • 2022-12-23
  • 2020-05-01
相关资源
相似解决方案