跳至內容

數據傳輸對象

本頁使用了標題或全文手工轉換
維基百科,自由的百科全書

計算機編程中,數據傳輸對象 (data transfer object,DTO[1][2])是在2個進程中攜帶數據的對象。因為進程間通信通常用於遠程接口(如web服務)的昂貴操作。[2]成本的主體是客戶和服務器之間的來回通信時間。為降低這種調用次數,使用DTO聚合本來需要多次通信傳輸的數據。[2]

DTO與業務對象英語business object數據訪問對象的區別是:DTO的數據的變異子與訪問子(mutator和accessor)、語法分析(parser)、序列化(serializer)時不會有任何存儲、獲取、序列化和反序列化的異常。即DTO是簡單對象,不含任何業務邏輯,但可包含序列化和反序列化以用於傳輸數據。[1]即DTO僅包含數據,不包含任何邏輯(logic)和行為(behavior)。邏輯(logic)和行為(behavior)指該類型的方法。對於C#,DTO只包含屬性(property),這些屬性只能讀(get)、寫(set)數據,不能對屬性做驗證(validate)或執行其他操作。

向DTO添加元數據以使其支持模型驗證或類似目的的情況並不罕見。這不會向DTO本身添加任何行為,而是使能系統其他地方行為。 因此,它們並沒有違反DTO不應包含任何行為的「規則」。

術語

值對象英語value object不是DTO。過去Sun/Java環境曾把二者混為一談。[2]

例子

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. ^ 1.0 1.1 MSDN (2010). Data Transfer Object. Microsoft MSDN Library. Retrieved from https://msdn.microsoft.com/en-us/library/ms978717.aspx頁面存檔備份,存於網際網路檔案館).
  2. ^ 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頁面存檔備份,存於網際網路檔案館).

外部連結