gpt4 book ai didi

c# - 允许服务之间的通信?

转载 作者:行者123 更新时间:2023-11-30 17:03:45 25 4
gpt4 key购买 nike

我们正在处理许多服务,比方说 PersonServiceInsuranceServicePaycheckService。要通过 API 访问这些服务,需要有一个 Controller 。

在某些情况下,PaycheckService 需要有关Person 的信息。目前我们在 ControllerService 之间使用一个层来:

  • 从 PersonService 获取信息
  • 从PaycheckService获取信息
  • 合并并返回结果。

此时正在运行,但随着更多服务的创建,服务之间的依赖性会增加。这会在这个“层间” 中产生更多逻辑(魔法?)。

我一直在阅读有关依赖注入(inject)和服务定位器主题的 Fowler,这可能很有用。 (我们确实将 Unity 用于 IoC,在这里和那里使用 DI 以实现共享功能)

问题是什么是让服务消费其他服务的好策略?

(消息传递、注入(inject)、REST、..)

Visual

最佳答案

您的服务应该是自治的。他们不应该互相交流。您应该认为每一项服务都是一个完全独立的产品,可以用于其他项目,或者它可以为其他公司服务,用于不同的目的。

如果 ServiceY 需要来自 ServiceX 的一些数据,ServiceY 应该获取该数据作为输入,它不应该连接其他服务来获取数据。

您可以在您的服务前面放置一个(或多个)外观来编排您的服务。这个外观实际上是您的应用程序的高级业务,包括首先从 ServiceY 获取数据然后将该数据提供给 ServiceX 并从 X 获取结果等工作流。

如果您的服务不是 Web 服务而只是应用程序业务层中的组件,那么它们应该是自治的并且不应相互使用,并且 Controller 可以作为您的外观来编排您的服务组件。

关于c# - 允许服务之间的通信?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18266890/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com