POCO与DTO:部分水合域对象是否可以?

Jon*_*yMC 6 domain-driven-design poco dto

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

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

service.GetDomainObjects(int listID,Profile.ListProfile); service.GetDomainObjects(string searchParam,Profile.SearchProfile);

tha*_*att 3

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

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

  • 给整个物体加水的开销是多少?增加的复杂性(DTO 或部分水合物体)真的值得吗?
  • 还有其他人会使用您的代码吗?不要让人们与部分水合的对象混淆,当人们来维护你的代码时,DTO 可能会更清楚。

我个人对 DTO 有一点偏爱,因为我觉得系统的长期维护会更容易。如果您是一个单人乐队,或者这是一个一次性应用程序,我完全可以理解不想引入一堆额外的类来扰乱您的代码。