Blazor WebAssembly(托管)微服务策略

Nei*_*l W 3 architecture microservices blazor

我的应用程序的核心由一套微服务组成,每个微服务主要使用 DDD 架构。

在标准 MVC 解决方案中,客户端将访问我的控制器,控制器将与我的微服务交互。

在 Blazor 服务器设置中,方法类似。

但是,通过 Blazor WebAssembly(托管)设置,我有机会直接从 Blazor WebAssembly 客户端引用我的微服务。

这明智吗?

或者我最好在 Blazor 服务器上创建一个外观(该服务器进而访问微服务)并仅从 Blazor WebAssembly 客户端与该外观通信?

我的 Blazor 服务器有自己的引用微服务的需求,我正要在客户端上注册微服务,然后想知道这是否明智。

Jus*_*nno 5

它在很大程度上取决于您的架构及其约束,并且会考虑正确的答案。

最好的朋友

您可以使用 BFF(前端后端)模式,您的面孔。在这种情况下,另一个微服务将充当 Blazor 应用程序和微服务环境之间的网关。

因此,前端不需要知道要查找哪个服务中有哪些信息。通常,这会简化前端的开发。此外,BFF 可以处理跨领域的问题,例如身份验证。

但是,您引入的新微服务无助于解决您的业务问题。您正在添加另一层意外的复杂性。

此外,通过 BFF,您可以在服务之间创建一种依赖关系。如果您更改或添加微服务的功能,您还需要更新 BFF。

直接打电话给他们

如果您的微服务具有一种可以向公众(您的 Blazor 客户端)公开的 HTTP (REST) API(顺便说一句,并非每个微服务都需要),则可以选择直接从客户端调用它们。

每个服务都需要处理跨领域的问题,例如自身的身份验证。客户端需要跟踪与服务的多个潜在连接。它们将具有不同的 URL,但可能还需要不同的标头等。

结论

这取决于。您最了解自己的架构,并且有很多文章讨论 BFF 的优缺点。我建议从这篇文章开始https://learn.microsoft.com/en-us/dotnet/architecture/microservices/architect-microservice-container-applications/direct-client-to-microservice-communication-versus-the-api -网关模式

  • 我们谈论的是 3 个还是 30 个微服务?
  • 客户端多久调用一次微服务?
  • 客户端多久需要请求多个服务来生成视图?
  • 您以前使用过 API 网关吗?
  • 是否需要身份验证或存在问题?
  • 微服务的API如何定期更改?

希望我的回答能帮助您找到答案。:)