领域服务实现应该驻留在 DDD 项目结构中的什么位置?
如果我们有 IDomainInterface
和 DomainInterface
实现,应该 DomainInterface
实现驻留在解决方案/项目的基础设施或核心/领域部分?
最佳答案
域服务接口(interface)及其实现可能驻留在域层中。但是,如果域服务实现依赖于基础设施问题,那么通过应用依赖倒置原则,实现将存在于基础设施层,同时依赖于域中定义的接口(interface)。
大多数领域服务将不需要依赖于基础设施问题,并将用于对在现有聚合中找不到自然归宿的用例进行建模,但一些领域服务会。
存储库是最常见的领域服务,需要基础设施知识,因此您会发现它们的实现存在于基础设施层,但还有其他示例。
例如,在 IDDD 的身份和访问有界上下文中,EncryptionService接口(interface)位于域中,而 MD5EncryptionService具体实现存在于基础设施中。
关于domain-driven-design - DDD : Where to put implementation of domain services,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39610987/