什么是数据传输对象?
在MVC模型类DTO,如果不是什么区别,我们需要两者吗?
什么是数据传输对象?
在MVC模型类DTO,如果不是什么区别,我们需要两者吗?
当前回答
DTO是一个愚蠢的对象——它只保存属性,有getter和setter,但没有任何其他重要的逻辑(除了一个compare()或equals()实现)。
通常MVC中的模型类(假设这里是。net MVC)是dto,或者dto的集合/聚合
其他回答
To me the best answer to the question what is a DTO is that DTO's are simple objects that should not contain any business logic or methods implementation that would require testing. Normally your model (using the MVC pattern) are intelligent models, and they can contain a lot of/some methods that do some different operations for that model specifically (not business logic, this should be at the controllers). However, when you transfer data (eg. calling a REST (GET/POST/whatever) endpoint from somewhere, or consuming a webservice using SOA, etc...) you do not want to transmit the big sized object with code that is not necessary for the endpoint, will consume data, and slow down the transfer.
数据传输对象(DTO)描述了“承载数据的对象” (维基百科)或“用于封装数据的对象”, 并将它从应用程序的一个子系统发送到另一个子系统”(堆栈溢出 答案)。
在MVC中,数据传输对象通常用于将域模型映射到最终由视图显示的更简单的对象。
从维基百科:
数据传输对象(DTO),以前称为值对象或VO 一种用于在软件应用程序之间传输数据的设计模式 子系统。dto通常与数据访问一起使用 对象从数据库检索数据。
数据传输对象是用于封装数据并将数据从应用程序的一个子系统发送到另一个子系统的对象。
dto最常被n层应用程序中的服务层用于在自身和UI层之间传输数据。这样做的主要好处是减少了分布式应用程序中需要通过网络发送的数据量。它们还可以在MVC模式中创建很棒的模型。
dto的另一个用途是封装方法调用的参数。如果一个方法需要超过4个或5个参数,这可能很有用。
在使用DTO模式时,还可以使用DTO汇编程序。汇编程序用于从域对象创建dto,反之亦然。
从域对象转换到DTO并再转换回来可能是一个代价高昂的过程。如果您不是在创建分布式应用程序,那么您可能不会从这个模式中看到任何好处,Martin Fowler在这里解释道。
数据传输对象背后的原理是创建新的数据对象,其中只包括特定数据事务所需的必要属性。
福利包括:
使数据传输更加安全 如果删除所有不必要的数据,则减少传输大小。
阅读更多信息:https://www.codenerd.co.za/what-is-data-transfer-objects