DDD 为什么要在域服务上创建接口?

问题描述 投票:0回答:2

我正在将 DDD 用于 3 个应用程序,这些应用程序通过 3 个不同的应用程序(工作流)服务使用相同的域层(域服务)。基础设施和 UI 层无权访问领域服务。我还通过域服务构造函数传递所有外部依赖项,例如存储库。那么,我需要在域服务上创建接口吗?请注意,我已经定义了应用程序服务的接口。

c# interface domain-driven-design
2个回答
2
投票

为什么要找理由?一旦您发现需要,您随时可以提取接口。


0
投票

晚了 10 年,但也许有人看到这个答案:

六边形架构的主要目标是可扩展和可维护。当您在一个类中进行更改并且需要在许多类中进行更多更改时,这是不可扩展的。

为了解决这个问题,架构将最不稳定的类(基础设施,通常更改频繁)与更稳定的类(应用程序,很少更改和领域,从不更改)分开。并尝试稳定类不依赖于易失性类(例如,将易失性类作为稳定类的属性)。

这就是为什么你可以从易失性类中引用稳定类,但易失性类不能引用稳定类。

当您需要使用稳定类中的易失性类时会发生什么?例如,使用应用程序服务中的存储库。你可以直接引用它,所以你把一个接口放在领域层(接口很少改变),并在存储库层做一个存储库实现(实现可能经常改变)。因此应用程序服务依赖于领域接口,并且是所使用的基础设施实现。

您不需要在域服务上创建接口:

  • 领域层及其服务不打算频繁更改。
  • 领域层是最核心的层。您想要引用这些服务的任何地方都将比域更外部,更不稳定。

所以从没有接口的应用服务中引用领域服务是正确的,你不需要它。

© www.soinside.com 2019 - 2024. All rights reserved.