ASP.NET core 3.1 中“Web 应用程序”和“Blazor 服务器应用程序”之间的区别

Dab*_*olB 4 c# asp.net visual-studio .net-core blazor

Web应用程序

Blazor 服务器应用程序

您好,我正在尝试掌握 .NET CORE 3.1 和 Visual Studio 2019 中提供的模板。具体来说,我正在尝试了解 Web 应用程序(如第一张图所示)与 Web 应用程序之间的区别Blazor 服务器应用程序(第二张图)。

根据我通过研究的理解,我可以确定以下内容: - 两者都在 .net core 3 上运行 - 两者都使用 razor - 两者都在服务器级别运行 - 两者都使用“代码隐藏”的概念/结构

但是: - Web 应用程序使用 .cshtml - blazor 服务器应用程序使用 .razor

我相信 blazor 服务器应用程序不需要 javascript 知识来进行数据绑定,并且具有使用 c# 代码进行绑定等的好处。我已经阅读了“Blazor 服务器应用程序”和“Blazor”的好处的文档WebAssembly 应用程序”;太棒了。然而,“服务器应用程序”和“Web 应用程序”之间有惊人的相似之处

“Web 应用程序”和“Blazor 服务器应用程序”之间还有什么其他区别

viv*_*una 5

我读过一篇文章,它很容易地描述了这两者之间的差异及其优点和缺点。

Blazor WebAssembly 托管模型的优点:

  • Blazor WebAssembly 应用程序可以完全在客户端计算机上运行。因此,下载应用程序后,不需要连接到服务器。这意味着您的服务器无需 24X7 不间断运行。
  • 工作从服务器转移到客户端。这是正在使用的客户端资源和能力。
  • 我们不需要成熟的 ASP.NET Core Web 服务器来托管应用程序。我们只需要一个服务器,可以将应用程序传送到客户端浏览器。这意味着我们可以将应用程序托管在互联网上的某个地方、云中、Azure 上作为静态网站甚至 CDN 内容交付网络上我们自己的服务器上。

Blazor WebAssembly 托管的缺点:

  • 第一个请求通常需要更长的时间,因为必须将整个应用程序、其依赖项和 .NET 运行时下载到客户端浏览器。请记住,这只是第一个请求需要比平常更长的时间。如果同一客户端稍后访问该应用程序,它通常会快速启动,因为浏览器会缓存文件。
  • 由于该应用程序完全在客户端浏览器上运行,因此它受到浏览器功能的限制。
  • 根据应用程序的性质,需要有能力的客户端硬件和软件。例如,从软件的角度来看,至少需要一个支持 WebAssembly 的浏览器。

Blazor Server 托管模型的优点:

  • 该应用程序的加载速度要快得多,因为下载大小明显小于 Blazor WebAssembly 应用程序。由于该应用程序在服务器上运行,因此它可以充分利用服务器功能,包括使用任何 .NET Core 兼容 API。
  • 客户端使用该应用程序所需的只是浏览器。即使不支持 WebAssembly 的浏览器也可以使用。
  • 更安全,因为应用程序的 .NET/C# 代码不提供给客户端。

Blazor 服务器托管的缺点:

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

  • 始终需要与服务器的活动连接。这意味着需要保持服务器 24X7 保持正常运行。如果服务器宕机,应用程序就会停止工作。由于每次用户交互都涉及到服务器的往返,因此与 Blazor WebAssembly 托管相比,通常存在更高的延迟。

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

参考: https: //www.pragimtech.com/blog/blazor/blazor-hosting-models/