Blazor 服务器与 Blazor Web Assembly

Blazor Server vs Blazor Web Assembly

我将使用新的 .NET 5 Blazor Framework 创建一个 ERP 应用程序,它包含 300 个页面和 250 个并发用户。我想知道开发 ERP 应用程序首选哪种建模托管:Blazor Server 或 Blazor Web Assembly。

Blazor Server App 在服务器上运行并通过 SignalR 与其客户端(浏览器)通信。服务器不会为应用程序的每个连接创建一个应用程序实例。由于代码在服务器上执行,并且只有 html 差异被传递给客户端以更新 DOM,服务器为每个连接的客户端创建一个电路对象,用于存储应用程序状态,会话数据等。这可能要求很高但仍然有效,并且服务器可以同时为数千个客户端提供服务。

WebAssembly Blazor 应用托管的工作方式不同。服务器的作用只是在首次访问时为应用程序提供服务。 App本身运行在客户端的浏览器上,一切都在客户端进行。这里不涉及服务器。从 Blazor 客户端对 Web Api 端点执行 HTTP 调用等同于当您的 Web 应用程序是 MVC 应用程序或剃刀页面应用程序。实际上,在幕后,WebAssembly 应用程序使用 JavaScript Fetch Api 将 HTTP 调用发送到 Web Api 端点。

如果您保持相同的功能级别,Blazor 服务器应用程序或 WebAssembly 将消耗几乎相同的资源:API 调用和双向通信(WebSocket = SignalR 连接)

如果您不需要 WebSocket,那么 WebAssembly 的扩展性更好。

对于少于 5000 个并发连接的 Intranet,Blazor Server 是更好的选择,因为:

  • 您无需创建API,直接从页面代码调用业务逻辑。例如 cmd.ExecuteQuery()。开发 API 是一项巨大的开发任务,请查看 gRPC 以简化任务。
  • 您可以像 WinForm 应用程序一样进行调试,这是宝贵的。不使用 API 使调试更容易

WebSocket 更适合 CPU 密集处理,可以 运行 在客户端或调用很少 API

的站点