Domain driven design POCO vs DTO:部分水合一个域对象可以吗?

Domain driven design POCO vs DTO:部分水合一个域对象可以吗?,domain-driven-design,poco,dto,Domain Driven Design,Poco,Dto,通常需要在UI上以各种方式显示域对象;列表、搜索结果、查看和编辑页面以及页眉、页脚和弹出窗口。通常,域对象有几个不同的“视图”,每个视图显示不同的字段 大多数建议似乎是在需要子集或超集时使用DTO来获取数据。维护DTO有很多开销。简单地填充每个场景所需的域对象的属性是一种不好的方法。例如,您可以使用配置文件说明应包括哪些属性,例如: GetDomainObjects(int-listID,Profile.ListProfile); GetDomainObjects(字符串searchParam,

通常需要在UI上以各种方式显示域对象;列表、搜索结果、查看和编辑页面以及页眉、页脚和弹出窗口。通常,域对象有几个不同的“视图”,每个视图显示不同的字段

大多数建议似乎是在需要子集或超集时使用DTO来获取数据。维护DTO有很多开销。简单地填充每个场景所需的域对象的属性是一种不好的方法。例如,您可以使用配置文件说明应包括哪些属性,例如:

GetDomainObjects(int-listID,Profile.ListProfile);
GetDomainObjects(字符串searchParam,Profile.SearchProfile)

对我来说,这归根结底是你想要的开销,要么你将有一组不同的类来表示你的DTO,要么你将有一组方法,每个方法返回相同的域对象,但不同的字段被“水合”

为了帮助做出决定,我会问几个问题:

  • 给整个物体补水的开销是多少?增加的复杂性(DTO或部分水合物体)真的值得吗
  • 其他人会使用你的代码吗?您不必将人们与不规则的对象混淆,当人们来维护您的代码时,DTO可能会更清晰
我个人稍微偏爱DTO,因为我觉得系统的长期维护会更容易。如果你是一个人的乐队,或者这是一个一次性的应用程序,我完全可以理解不想引入一堆额外的类,这会使你的代码混乱