Architecture 在DDD体系结构中的何处放置助手类?

Architecture 在DDD体系结构中的何处放置助手类?,architecture,domain-driven-design,Architecture,Domain Driven Design,我已经阅读了这篇文章的答案,但我相信我的需求是不同的 我在我的域层中有一个类a,它的一个方法getValue需要从文件中读取以获得特定的值,因此我考虑创建一个助手类来读取文件,并尽可能保持getValue干净和最小 由于我是第一次使用DDD,并且基于我所掌握的浅薄知识,我认为helper类可以放在域层中,因为它将被使用 将helper类放在域层是明智的选择吗?如果没有,, 是否有更好的符合DDD的解决方案 我不建议触摸域/聚合中的文件系统,因为它们应该是纯的。但是,如果您使用的是CQRS+事件源

我已经阅读了这篇文章的答案,但我相信我的需求是不同的

我在我的域层中有一个类
a
,它的一个方法
getValue
需要从文件中读取以获得特定的值,因此我考虑创建一个助手类来读取文件,并尽可能保持
getValue
干净和最小

由于我是第一次使用DDD,并且基于我所掌握的浅薄知识,我认为helper类可以放在域层中,因为它将被使用

将helper类放在域层是明智的选择吗?如果没有,,
是否有更好的符合DDD的解决方案

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


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

从文件中读取数据应该在基础结构层中,还可以使用数据库、外部服务、与低级API的通信等。这是技术代码,而不是域逻辑。它应该在那里

在DDD中,您可以使用服务放置一些帮助程序代码,当然,如果它是域逻辑而不是工厂代码。您还可以使用Repository对象在域层内创建接口,并在基础架构层中实现


因此,您可以在域层创建IMyDataRepository接口,在基础架构层创建MyDataRepository类,在应用程序层解决依赖关系。

谢谢您的回复,我也不喜欢域层与文件系统交互的想法,因为我有这样的工作原理“我的域层必须能让我毫无问题地移动或共享它”,所以我决定把这些值放到我的类中,而不是文件中。