数据传输对象,域对象和存储库

Cha*_*ham 8 domain-driven-design

我想弄清楚所有这些是如何协同工作的.我知道DTO基本上只是一个数据容器,域对象可以来回传递给表单等.Domain对象是包含DTO还是DTO,而Domain Object恰好具有将手动映射的所有相同属性?

如果我在服务中公开我的DTO类型,如何在不为客户端上的每个获取/设置操作创建往返的情况下使用getter和setter?我知道你可以有一个很长的构造函数,但是如果你有超过7个属性,这会变得很难看.

实现存储库模式时,是否要传入DTO或域对象?

Cha*_*ham 4

  • DTO 和域对象应该是分开的。
  • 应该有一个映射器将 DTO 映射到域对象,并将域对象映射到 DTO。该映射器应该是接口的实现,默认映射器使用反射将对象相互映射。
  • 存储库应该是一个返回域对象的服务,域对象本身应该提供服务。
  • 如果 DTO 是由 Web 服务公开的类,则创建的 WSDL 将属性定义为元素,而在另一端创建的代理仅创建在客户端本身上运行的 getter/setter 属性,因此 getter 和 setter 不会导致往返。
  • 即使您只是在 DTO 中创建公共变量,代理也会被实现为 getter 和 setter。