DTO可用于在应用程序的不同层之间进行数据传输:DAO,服务,外观,控制器。以我的经验,DTO是一个自以为是的话题。
我认为,转换越晚越好,如果不需要转换就更好。通常,后者位于应用程序边界。DTO不是免费的,它涉及映射及其支持。因此,当边界上存在域模型不匹配或模型技术不匹配时,DTO才有意义。有关更多信息,请查看LocalDTO文章和相关链接。
如果我专注于 服务 -> 门面 -> 控制器 层:
他们正在做服务的事情,他们可能会互相呼叫进行处理。如果您的域模型在服务边界上保持一致,那么service => facade
将结果转换为DTO还为时过早。
他们可以协调服务并转换输入/输出。以我的观点,这将是与DTO相互转换的正确地方。但是只有在需要的时候。因为您的域模型必须跨越此边界进行转换(过滤字段,聚合…)
因此,以我的观点,您的第一个建议更加适应。UserController....
。最重要的是保持务实。