在DDD架构中放置辅助类的位置?

El *_*Sam 3 architecture domain-driven-design

我已经在这个类似的问题中阅读了答案,但我相信我的需求是不同的.

我的ADomain层中有一个类,其中一个方法getValue需要从文件中读取以获取特定值,因此我考虑创建一个帮助类来执行文件读取并保持getValue尽可能干净和最小.

由于我是第一次使用DDD,并且基于我所拥有的简陋知识,我认为辅助类可以放在域层中,因为它将被用于它.

将帮助器类放在域层中是明智的选择吗?如果否,是否有更好的DDD兼容解决方案?

Con*_*enu 6

我不建议接触域/聚合内的文件系统,因为它们应该是纯粹的。但是,如果您使用 CQRS+Event source,那么您可以在读取端执行 IO,但要小心重放,因为应用程序状态必须随时可重建。

如果您不使用 CQRS,而是使用某种分层架构,并且必须执行 IO,那么您应该将依赖关系反转到基础设施(完成 IO 的地方)。为此,您可以在域层中定义接口并在基础设施层中定义实现。


Vas*_*huk 5

从文件读取数据应该在Infrastructure层中,以及使用数据库,外部服务,与低级API的通信等.这是技术代码,而不是域逻辑.应该在那里.

在DDD中,您可以使用服务来放置一些帮助代码,如果它当然是域逻辑而不是工厂.您还可以使用Repository对象在Domain Layer中创建接口,在Infrastructure层中创建实现.

因此,您可以在Domain层中创建IMyDataRepository接口,在Infrastructure层中创建MyDataRepository类,从而解决Application层中的依赖关系.