Data Transfer Object (DTO) — один із шаблонів проєктування, який використовують для передачі даних між підсистемами програми. Спонукою до використання таких об'єктів є те, що передача даних між процесами зазвичай відбувається за допомогою віддалених інтерфейсів (наприклад, веб-сервісів), де кожен виклик це дорога дія.[1] Через те що більшість вартості кожного виклику пов'язана з часом пересилання в обидва боки між клієнтом і сервером, один зі способів зменшити кількість викликів це використати об'єкт, який агрегує дані, які інакше були б передані кількома викликами.[1]

Зауваження

ред.

Data Transfer Object не повинні містити ніякої логіки, але можуть містити механізми серіалізації/десереалізації для передавання даних по дроту.

Приклад

ред.

Нехай потрібно створити нового користувача. Щоб не навантажувати функції великою кількістю аргументів, можна створити об'єкт, який міститиме значення в собі, та передати його

public class CreateUserDTO
{
    public string Name { get; set; }
    public string Surname { get; set; }
}

Типи DTO

ред.

У багаторівневих системах заведено відрізняти DTO які працюють із рівнем презентації. Так об'єкти, які формують вигляд називають ViewModel, а ті, що являються результатом дій користувача (взаємодія із графічним інтерфейсом, заповнена форма тощо) — InputModel.

Примітки

ред.
  1. а б Мартін Фаулер (2010). Data Transfer Object. Patterns of Enterprise Application Architecture. Отримано з http://martinfowler.com/eaaCatalog/dataTransferObject.html.

Див.також

ред.