【问题标题】:Blazor WebAssembly (Hosted) MicroService StrategyBlazor WebAssembly(托管)微服务策略
【发布时间】:2021-03-27 11:26:24
【问题描述】:

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

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

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

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

这样做明智吗?

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

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

【问题讨论】:

    标签: architecture microservices blazor


    【解决方案1】:

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

    BFF

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

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

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

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

    直接调用他们

    如果您的微服务有一种可以公开(您的 Blazor 客户端)的 HTTP (REST) API(不是每个微服务都需要这种 API),则可以选择直接从客户端调用它们。

    每个服务都需要处理横切关注点,例如自己的身份验证。客户端需要跟踪到服务的多个潜在连接。它们将有不同的 URL,但可能还需要不同的标头等。

    结论

    这取决于。你最了解你的架构,并且有很多文章讨论 BFF 的优缺点。我可以推荐从这篇文章开始https://docs.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?

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

    【讨论】:

    • 感谢 cmets ... 和有用的链接。我得出的结论是 API-Gateway(外观)方法是可行的方法,尽管有额外的层,主要是因为我可以集中安全问题和微服务的编排。
    猜你喜欢
    • 1970-01-01
    • 2021-06-25
    • 1970-01-01
    • 2023-03-17
    • 1970-01-01
    • 2020-12-13
    • 2015-06-21
    • 2020-05-25
    • 2020-09-26
    相关资源
    最近更新 更多