我有以下情况:
用户对象
我想使用DTO模式在不同层之间传输用户信息。
问题:
我是否应该制作一个包含服务对象和数据库对象的所有属性的大型DTO?
我应该创建第三方数据对象作为DTO的属性。我的意思是隐藏接口后面的服务数据对象,并将该接口作为DTO的属性。
我是否需要在案例1或2中为DTO创建接口?
答案 0 :(得分:3)
通常,最好的DTO设计与客户端的要求以及返回它的方法/功能有关。我假设你为了序列化结果而这样做。
如果您只是简单地将您要存储的所有数据映射到DTO,那么您实际上并没有获得太多收益,并且可能只是发出您已存储的数据对象序列化的方式。
所以回答你的问题
1)否。您应该使用与您正在进行的通话相关的数据制作DTO,原因有几个。
请注意,发送一些"无关紧要的"用于代码重用的数据位。请注意数据的数量以及生成数据所需的工作量。在可读性和效率方面,没有比这更有意义的规则了。
2)取决于您的申请,但我倾向于说知道它的第三方数据通常与主叫客户获取DTO。您从中获取数据的第三方也可以从第三方获取。但他们回到你身边的DTO可能不会为你挑出那些数据。
3)接口,再次与你正在开发的应用程序有关。从客户的角度来看,除非您在程序集中提供DTO库,否则任何界面都不会有太大意义。如果DTO是由代理生成的(例如添加服务引用),或者客户端正在创建自己的DTO客户端版本,那么这些接口将不会传递给客户端。 / p>