java – 数据传输对象DTO在哪里构建

试图重构一些代码.我看到一些创建DTO对象的类正在服务层中传递,后来由@RestController返回.据我所知,最好只在控制器中构建数据传输对象并将它们传递给视图,尤其是当我们使用像WrapperDTO< T>这样的东西时.使用get和set值.当我们使用复杂对象或简单数据类型构建WrapperDTO时,可能存在差异.所有的oppinions将非常感激.

解决方法:

DTO可用于在应用程序的不同层之间传输数据:DAO,服务,外观,控制器.根据我的经验,DTO是一个自以为是的主题.

在我看来,转换越晚越好,如果不需要转换则更好.通常,后者位于应用程序边界. DTO不是免费的,它涉及映射及其支持.因此,当存在域模型不匹配或模型技术不匹配时,DTO将是有意义的.有关更多信息,请查看LocalDTO article and the associated link.

如果我专注于服务 – >外观 – >控制器层:

>服务:他们正在做服务,他们可能会互相打电话进行处理.如果您的域模型在服务边界服务中保持一致=>将结果转换为DTO为时尚早.
> Facades:他们可以协调服务并转换输入/输出.在我看来,它将是转换到DTO或从DTO转换的正确位置.但只有在需要时才是这样.因为你的域模型必须在这个边界上进行转换(过滤字段,聚合……)
>网关/控制器:它们位于应用程序边界.他们的逻辑很简单,简化为边界逻辑.立面和控制器之间的关系通常是一个< - >.一. ***

合并外墙和控制器通常是有道理的

因此,在我看来,你的第一个提案更适合,例如. UserController …..最重要的是保持务实.

上一篇:DTO代码自动生成器的入门 DTOHelper


下一篇:c# – 如何使用AutoMapper填充回DataTable?