Blazor WebAssembly(托管)MicroService策略



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

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

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

然而,通过Blazor WebAssembly(Hosted(设置,我有机会直接从Blazor Web Assembly客户端引用我的微服务。

这明智吗?

还是我最好在Blazor服务器上创建一个facade(反过来访问微服务(,然后只从Blazor WebAssembly客户端与该facade通信?

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

这在很大程度上取决于您的体系结构及其约束,并且需要考虑一个合适的答案。

BFF

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

因此,前端不需要知道在什么服务中可以找到什么信息。通常,这简化了前端的开发。此外,BFF可以处理诸如身份验证之类的跨领域问题。

然而,您引入了一种新的微服务,它无助于解决您的业务问题。你又增加了一层偶然的复杂性。

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

直接呼叫他们

如果你的微服务有一种HTTP(REST(API(不是每个微服务都需要btw(,可以向公众(你的Blazor客户端(公开,那么直接从客户端调用它们是一种选择。

每个服务都需要处理交叉问题,比如自己进行身份验证。客户端需要跟踪到该服务的多个潜在连接。他们会有不同的URL,但可能也需要不同的标题等。

结论

这取决于情况。你最了解你的体系结构,有很多文章讨论BFF的优缺点。我可以建议从这篇文章开始https://learn.microsoft.com/en-us/dotnet/architecture/microservices/architect-microservice-container-applications/direct-client-to-microservice-communication-versus-the-api-gateway-pattern.

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

我希望我的答案能帮助你找到答案。:(

大多数情况下,没有。在客户端上运行的代码通常与API-Gateway通信,让它成为JavaScriptSPA、移动应用程序或现在的blazor-webassembly。

原因如下:

  • 当任何微服务发生变化时,更新客户端缓存的代码比更新服务器代码更困难
  • 防火墙后面的客户端可能无法访问微服务的通信协议(例如AMPQ、gRPC(或端口
  • 客户端的internet连接可能较慢。向多个微服务发出多个请求可能会导致用户体验不佳
  • 在每个微服务中处理客户端授权可能会有问题

相关内容

  • 没有找到相关文章

最新更新