何时使用 Blazor 自动交互模板?

问题描述 投票:0回答:1

我正在阅读文档和资源,但仍然不明白何时应该使用 *.Client 项目,该项目附带来自

blazor -int Auto Example
的模板。

所以 Client 项目是一个纯粹的 WebAssembly 项目,据我了解,这并不是从后端安全地读写数据的方便选择。 (这是可能的,是的,但是当仅为此任务选择服务器项目时更容易保护)

据我所知,到目前为止,客户端项目似乎是开发或多或少的静态首页“登陆页面”而不是交互式 Web 应用程序的地方。

blazor blazor-server-side blazor-webassembly
1个回答
0
投票

参考微软文章:https://learn.microsoft.com/en-us/aspnet/core/blazor/components/render-modes?view=aspnetcore-8.0#automatic-auto-rendering

假设您有一个组件想要在客户端上运行,但不希望用户等待整个 .Net WebAssembly 负载下载。将组件添加到您的 .Client 项目,并指定 @rendermode InteractiveAuto。

“该组件最初使用 Blazor Server 托管模型通过交互式服务器端渲染(交互式 SSR)进行渲染。.NET 运行时和应用程序包在后台下载到客户端并缓存,以便在将来访问时使用.”

当您在页面上时,组件的交互性将在服务器端进行。后续访问该页面将使用完全下载并缓存在浏览器组件中的 WASM Client 版本。

这里有一些用例,说明何时使用 SSRWebAssembly

Blazor Server 托管模型具有多种优势:

  • 下载大小明显小于使用 Blazor WebAssembly 托管模型时的大小,并且应用程序加载速度更快。

  • 该应用程序充分利用服务器功能,包括使用 .NET Core API。

  • 服务器上的.NET Core用于运行应用程序,因此现有的.NET工具(例如调试)可以按预期工作。

  • 支持瘦客户端。例如,Blazor Server 可与不支持 WebAssembly 的浏览器以及资源受限的设备配合使用。

  • 应用程序的 .NET/C# 代码库(包括应用程序的组件代码)不向客户端提供。

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

  • 通常存在较高的延迟。每个用户交互都涉及一个网络跃点。

  • 没有离线支持。如果客户端连接失败,交互就会失败。

  • 扩展具有许多用户的应用程序需要服务器资源来处理多个客户端连接和客户端状态。

  • 需要 ASP.NET Core 服务器来为应用程序提供服务。无服务器部署方案是不可能的,例如从内容交付网络 (CDN) 提供应用程序。

Blazor WebAssembly 托管模型具有多种优势:

  • 对于独立的 Blazor WebAssembly 应用程序,从服务器下载应用程序后,不存在 .NET 服务器端依赖项,因此即使服务器脱机,应用程序仍可正常运行。

  • 充分发挥客户资源和能力。工作从服务器转移到客户端。

  • 对于独立的 Blazor WebAssembly 应用程序,不需要 ASP.NET Core Web 服务器来托管应用程序。

  • 无服务器部署方案是可能的,例如从内容交付网络 (CDN) 提供应用程序。

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

  • Razor 组件受限于浏览器的功能。

  • 需要强大的客户端硬件和软件(例如,WebAssembly 支持)。

  • 下载体积较大,组件加载时间较长。

  • 发送给客户端的代码无法防止用户检查和篡改。

© www.soinside.com 2019 - 2024. All rights reserved.