【问题标题】:Using Blazor server side使用 Blazor 服务器端
【发布时间】:2020-09-19 21:07:14
【问题描述】:

我有一个 ASP.NET Core Web API 项目,我需要开发一个前端 UI 来使用它,利用 Blazor 的单页应用程序 (SPA) 和组件模型,我正在考虑使用 Blazor服务器应用程序,但我的应用程序将成为未来至少有 20,000 个或更多并发用户的企业应用程序,我担心的显然是 SignalR 连接。

Blazor 服务器端可以处理它吗? 感谢您的友好回复。

【问题讨论】:

  • “至少 20,0000 个并发用户。” (1) Azure 可以处理; (2) 你是 YouTube 吗?

标签: c# asp.net-core blazor-server-side


【解决方案1】:

是的,Blazor Server 会处理它。您只需要额外的系统资源。如果没有深入了解您的业务和计划,没有人可以推荐任何适合您需求的技术。拥有 Web API 后,与 Blazor WASM 相比,我看不到 Blazor Server 的许多优势。 Blazor WASM 未声明为 LTS。微软明天可以停止开发它,你将只有大约 3 个月的支持。我建议使用稳定的成熟技术,如 Angular/React。

【讨论】:

    【解决方案2】:

    我会改用 Blazor WebAssembly。

    https://docs.microsoft.com/en-us/aspnet/core/blazor/hosting-models?view=aspnetcore-3.1#blazor-webassembly

    如果您仍想继续使用 Blazor Server,可以阅读下文。

    https://docs.microsoft.com/en-us/aspnet/core/blazor/hosting-models?view=aspnetcore-3.1#blazor-server

    每个电路使用大约 250 KB 的内存来实现最小的 Hello 世界风格的应用程序。电路的大小取决于应用程序的代码和 与每个组件相关的状态维护要求。我们 建议您在开发过程中衡量资源需求 您的应用程序和基础架构,但以下基线可以是 规划部署目标的起点:如果您期望 应用程序支持 5,000 个并发用户,考虑预算至少 1.3 应用的服务器内存 GB(或每个用户约 273 KB)。

    https://docs.microsoft.com/en-us/aspnet/core/host-and-deploy/blazor/server?view=aspnetcore-3.1

    这是一个很好的比较,也是在Standard D3 v2 instance on Azure (4vCPU & 14GB memory) 上进行的测试,有超过 20,000 个并发活跃用户

    特别注意:

    这些实验的主要发现是 内存和延迟是 Blazor Server 的主要瓶颈 应用程序。如果延迟超过 200 毫秒,那么性能就会受到影响 并且规模受到盒子上可用内存的限制。

    https://stackoverflow.blog/2020/02/26/whats-behind-the-hype-about-blazor/

    【讨论】:

      【解决方案3】:

      如果您将 signalR 部分移交给特定于此目的的服务,则一些(很多?)性能损失会从您的 webapi 中消除。

      Azure 已为此提供服务 - 公平地说,如果您在 VS 中新建一个新的 blazor 服务器端并将其发布到 Azure 订阅,VS 会提示您提供一个单独的 SignalR 服务(并为您设置它) )。

      不是对您的问题的明确答案,而是您可以调整设置以提高性能的一种方法 - 如果您将 SignalR 排除在等式之外,那么问题就在于您每次的会话量有多大用户。

      如果你想深入了解这个,链接很少: https://docs.microsoft.com/en-us/aspnet/core/blazor/hosting-models?view=aspnetcore-3.1

      Why is Azure SignalR Service recommended when deploying a Blazor Server Side app?

      https://www.youtube.com/watch?v=qe9qANk8Ecw&feature=youtu.be

      【讨论】:

        【解决方案4】:

        我想说的是,有一些旧技术有很多资源,而新技术有很多潜力,这是正确的。因此,您可以拥有一个可靠且拥有大量用户的开源软件。 React、Vue、颤振、Tensorflow。

        【讨论】:

          【解决方案5】:

          绝对可以使用 Blazor 服务器应用,但您必须注意一些事项。

          • 需要一个成熟的 ASP.NET Core 服务器来托管应用程序。 无服务器部署场景,例如从 CDN 为应用程序提供服务 不可能。
          • 始终需要与服务器的活动连接。这意味着 需要保持服务器 24X7 正常运行。如果服务器 已关闭,应用程序停止工作。
          • 由于每个用户交互都涉及到服务器的往返 与 Blazor WebAssembly 相比,通常存在更高的延迟 托管。
          • 可扩展性可能具有挑战性,尤其是对于具有许多 作为服务器的用户必须管理多个客户端连接,并且 处理客户端状态。但是,我们可以克服这个可扩展性问题, 通过将 Azure SignalR 服务与 Blazor 服务器应用结合使用。这项服务 允许 Blazor Server 应用程序通过支持大型 并发 SignalR 连接数。

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

          【讨论】:

          • 您查看价格了吗?前 20 个连接是免费的,但随后会爆炸。
          • @MihaiBratulescu 价格是多少?
          猜你喜欢
          • 2021-05-28
          • 2020-05-15
          • 2020-03-15
          • 1970-01-01
          • 2021-04-20
          • 1970-01-01
          • 2020-04-14
          • 2020-09-26
          相关资源
          最近更新 更多