对于 future 的项目,我决定使用 dto 将数据传递到域层。这里也是我进行大部分数据验证的地方。
我应该在哪里放置数据格式?
1) 在 DTO 中,当它准备好发送到域层时
或者
2)在它被持久化之前的基础设施层?
或者
3) 在别处:)
即:在保存之前需要加密的密码,或者在存储之前需要转换、调整大小等的图像。
我想将所有数据格式保留在一层中,不喜欢它分散在所有地方。
换句话说:应该为域准备数据来处理它还是域应该获取原始数据并在域处理之后更改它?
最佳答案
数据格式化是一个技术问题,因此它应该由基础设施服务处理,而不是由域处理。例如,密码散列应该由存储相应聚合的存储库处理。格式化也可能发生在 hexagonal architecture 中的适配器中这是 DTO 通常驻留的地方。这种类型的格式取决于手头的适配器类型。例如,您可以考虑将域模型公开为 HTTP 和域模型之间的适配器的 RESTful API。在这种情况下,必须在资源表示和相应的域对象之间执行格式化或转换。
关于domain-driven-design - DDD : Where should data be converted, 格式化、加密等?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12754524/