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

时间:2009-05-05 16:46:55

标签: domain-driven-design poco dto

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

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

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

1 个答案:

答案 0 :(得分:3)

对于我来说,这就是你想要开销的地方,要么你将有一组不同的类来代表你的DTO,要么你将拥有一组方法,每个方法返回相同的域对象,但不同的字段被“保湿”。

我要求帮助做出决定的几个问题是:

  • 保湿整个物体的开销是多少?增加的复杂性(DTO或部分水合物)确实值得吗?
  • 是否有其他人会使用您的代码?你不要把人们与水合物一起混淆,当人们来维护你的代码时,DTO可能会更加清晰。

我对DTO有一点个人偏好,因为我觉得系统的长期维护会更容易。如果你是一个单人乐队,或者这是一个一次性扔掉的应用程序,我完全理解不想介绍一堆会使你的代码混乱的额外课程。