为什么数据传输对象 (DTO) 是反模式?

我最近无意中听到有人说数据传输对象(DTO)是一种反模式

为什么?有哪些替代方案?


答案 1

有些项目将所有数据包含两次。一次作为域对象,一次作为数据传输对象。

这种重复具有巨大的成本,因此体系结构需要从这种分离中获得巨大的好处才能是值得的。


答案 2

DTO 不是反模式。当您通过网络发送一些数据(例如,发送到Ajax调用中的网页)时,您希望确保通过仅发送目标将使用的数据来节省带宽。此外,表示层通常可以方便地以与本机业务对象稍有不同的格式获取数据。

我知道这是一个面向 Java 的问题,但在 .NET 语言中,匿名类型、序列化和 LINQ 允许动态构造 DTO,这减少了使用它们的设置和开销。


推荐