使用Blazor服务器端

时间:2020-06-01 14:23:02

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

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

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

5 个答案:

答案 0 :(得分:0)

我会改用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/

答案 1 :(得分:0)

如果您将信号的R部分移交给专门用于此目的的服务,则会从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

答案 2 :(得分:0)

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

答案 3 :(得分:0)

我想指出的是,旧技术有很多资源,新技术有很多潜力。因此,您可以拥有一个可靠且拥有大量用户的开源软件,并且可以继续使用。 React、Vue、flutter、Tensorflow。

答案 4 :(得分:0)

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

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

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