數據傳輸對象
在計算機編程中,數據傳輸對象 (data transfer object,DTO[1][2])是在2個進程中攜帶數據的對象。因為進程間通信通常用於遠程接口(如web服務)的昂貴操作。[2]成本的主體是客戶和服務器之間的來回通信時間。為降低這種調用次數,使用DTO聚合本來需要多次通信傳輸的數據。[2]
DTO與業務對象或數據訪問對象的區別是:DTO的數據的變異子與訪問子(mutator和accessor)、語法分析(parser)、序列化(serializer)時不會有任何存儲、獲取、序列化和反序列化的異常。即DTO是簡單對象,不含任何業務邏輯,但可包含序列化和反序列化以用於傳輸數據。[1]即DTO僅包含數據,不包含任何邏輯(logic)和行為(behavior)。邏輯(logic)和行為(behavior)指該類型的方法。對於C#,DTO只包含屬性(property),這些屬性只能讀(get)、寫(set)數據,不能對屬性做驗證(validate)或執行其他操作。
向DTO添加元數據以使其支持模型驗證或類似目的的情況並不罕見。這不會向DTO本身添加任何行為,而是使能系統其他地方行為。 因此,它們並沒有違反DTO不應包含任何行為的「規則」。
術語
例子
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; }
}
參考文獻
- ^ 1.0 1.1 MSDN (2010). Data Transfer Object. Microsoft MSDN Library. Retrieved from https://msdn.microsoft.com/en-us/library/ms978717.aspx (頁面存檔備份,存於網際網路檔案館).
- ^ 2.0 2.1 2.2 2.3 Fowler, Martin (2010). Data Transfer Object. Patterns of Enterprise Application Architecture. Retrieved from http://martinfowler.com/eaaCatalog/dataTransferObject.html (頁面存檔備份,存於網際網路檔案館).