Blazor 托管模型

我们将创建我们的第一个 Blazor 项目。实际上,我们将创建 2 个 blazor 项目。一种使用服务器端托管,另一种使用客户端托管。然后我们将运行这两个项目,并查看它们执行的位置和方式的差异。

在此过程中,我们将了解两种托管模式之间的区别以及每种模式的优缺点

微信截图_20210602092302.png

执行以下命令安装Blazor WebAssembly App模板

dotnet new --install Microsoft.AspNetCore.Blazor.Templates::3.2.0-preview1.20073.1
复制代码

你可以从 Visual Studio 中的包管理器控制台或命令提示符执行此命令。

单击此处获取最新的 Blazor WebAssembly 应用程序模板

Blazor 托管模型

Blazor 有两种托管模型,Blazor WebAssembly(客户端托管模型)和Blazor Server(服务器端托管模型)

blazor hosting models explained.png

正如模板名称所暗示的那样,使用 Blazor 服务器应用程序模板创建具有服务器托管模型的 blazor 应用程序,使用 Blazor WebAssembly 模板创建具有客户端托管模型的 blazor 应用程序。

Blazor 服务器与 Blazor WebAssembly

两种项目类型的项目结构和布局没有太大区别。
 

微信截图_20210602092657.png

在 Visual Studio 中配置多个启动项目

我们可以在 Visual Studio中将多个项目配置为StartUp 项目。以下是步骤。

右键单击解决方案资源管理器中的解决方案名称,然后选择设置启动项目选项

QQ截图20210602092940.png

选择多个启动项目单选按钮。针对要设置为启动项目的每个项目,从“操作”下拉列表中选择“启动”。

微信截图_20210602092801.png

Blazor WebAssembly 托管模型

使用这种托管模型,应用程序直接在 WebAssembly 上的浏览器中运行。因此,应用程序所需的一切,即编译后的应用程序、它的依赖项和 .NET 运行时都从服务器下载到客户端浏览器。Blazor WebAssembly 应用程序可以完全在客户端上运行,而无需连接到服务器,或者我们可以选择将其配置为使用 Web API 调用或 SignalR 与服务器交互。

Blazor WebAssembly hosting model.png

Blazor WebAssembly 托管模型的好处:

Blazor WebAssembly 应用程序可以完全在客户端计算机上运行。因此,在下载应用程序后,不需要连接到服务器。这意味着你的服务器无需 24X7 全天候运行。 

工作从服务器卸载到客户端。正在使用的是客户端资源和功能。

我们不需要成熟的 ASP.NET Core Web 服务器来托管应用程序。我们只需要在某处有一个服务器,它可以将应用程序交付给客户端浏览器。这意味着我们可以将应用程序托管在 Internet 上某个地方的我们自己的服务器上,在云中,作为静态网站在 Azure 上,甚至在 CDN 内容交付网络上。

Blazor WebAssembly 托管的缺点:

第一个请求通常需要更长的时间,因为整个应用程序、它的依赖项和 .NET 运行时必须下载到客户端浏览器。请记住,这只是第一个请求需要比平时更长的时间。如果同一个客户端稍后访问该应用程序,它通常会快速启动,因为浏览器会缓存文件。

由于该应用程序完全在客户端浏览器上运行,因此它仅限于浏览器的功能。

根据应用程序的性质,需要有能力的客户端硬件和软件。例如,从软件的角度来看,至少需要一个支持 WebAssembly 的浏览器。

Blazor 服务器托管模型

使用此托管模型,应用程序在服务器上执行。在客户端和服务器之间建立 SignalR 连接。当客户端上发生事件(例如单击按钮)时,有关该事件的信息将通过 SignalR 连接发送到服务器。服务器处理事件并为生成的 HTML 计算差异。整个 HTML 不会再次发送到客户端,它只是通过 SignalR 连接发送到客户端的差异。然后浏览器更新 UI。由于仅应用差异来更新 UI,因此应用程序感觉更快,对用户的响应也更快。

Blazor Server hosting model.png

Blazor 服务器托管模型的优点:

该应用程序加载速度更快,因为下载大小明显小于 Blazor WebAssembly 应用程序

由于应用程序在服务器上运行,因此它可以充分利用服务器功能,包括使用任何与 .NET Core 兼容的 API。

使用该应用程序所需的所有客户端是浏览器。甚至不支持 WebAssembly 的浏览器也可以使用。

更安全,因为应用程序的 .NET/C# 代码不提供给客户端。

Blazor 服务器托管的缺点:

需要一个成熟的 ASP.NET Core 服务器来托管应用程序。无服务器部署方案(例如从 CDN 提供应用程序)是不可能的。

始终需要与服务器的活动连接。这意味着需要保持服务器 24X7 全天候运行。如果服务器关闭,应用程序将停止工作。

由于每个用户交互都涉及到服务器的往返,因此与 Blazor WebAssembly 托管相比,通常存在更高的延迟。

可扩展性可能具有挑战性,尤其是对于拥有众多用户的应用程序,因为服务器必须管理多个客户端连接并处理客户端状态。但是,我们可以通过将 Azure SignalR 服务与 Blazor 服务器应用程序结合使用来克服此可伸缩性问题。此服务允许 Blazor 服务器应用程序通过支持大量并发 SignalR 连接来真正很好地扩展。

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享