数据传输对象

在计算机编程中,数据传输对象 (data transfer object,DTO)是在2个进程中携带数据的对象。因为进程间通信通常用于远程接口(如web服务)的昂贵操作。成本的主体是客户和服务器之间的来回通信时间。为降低这种调用次数,使用DTO聚合本来需要多次通信传输的数据。

DTO与业务对象或数据访问对象的区别是:DTO的数据的变异子与访问子(mutator和accessor)、语法分析(parser)、序列化(serializer)时不会有任何存储、获取、序列化和反序列化的异常。即DTO是简单对象,不含任何业务逻辑,但可包含序列化和反序列化以用于传输数据。即DTO仅包含数据,不包含任何逻辑(logic)和行为(behavior)。逻辑(logic)和行为(behavior)指该类型的方法。对于C#,DTO只包含属性(property),这些属性只能读(get)、写(set)数据,不能对属性做验证(validate)或执行其他操作。

向DTO添加元数据以使其支持模型验证或类似目的的情况并不罕见。这不会向DTO本身添加任何行为,而是使能系统其他地方行为。 因此,它们并没有违反DTO不应包含任何行为的“规则”。

术语
值对象不是DTO。过去Sun/Java环境曾把二者混为一谈。

例子
public class ProductViewModel
{
public int ProductId { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public string ImageUrl { get; set; }
public decimal UnitPrice { get; set; }
}

参考文献
外部链接
*[http://martinfowler.com/eaaCatalog/dataTransferObject.html Summary from Fowler's book]
*[https://msdn.microsoft.com/en-us/library/ms978717.aspx Data Transfer Object - Microsoft MSDN Library]
*[http://www.genericdtoassembler.org/ GeDA - generic dto assembler is an open source Java framework for enterprise level solutions]
*[http://martinfowler.com/bliki/LocalDTO.html Local DTO]

评论 (0)

  • 还没有评论,来抢沙发吧。