В чем разница между объектом модели MVC, объект домена и DTO

В чем разница между объектом модели MVC, объектом домена и DTO?

Насколько я понимаю:

Объект модели MVC:

Моделирует данные, которые должны быть отображается в соответствующем представлении. Он может не отображаться напрямую на объект домена, то есть может включать данные из одного или нескольких объектов домена.

  1. Клиентская сторона
  2. Может содержать бизнес-логику. Например. проверки, вычисляемые свойства и т. д.
  3. Методы, не связанные с сохранением

Объект домена:

Объект, моделирующий реальный объект в проблемной области, например, резервирование, заказчик, заказ и т. д. Используется для сохранения данных.

  1. На стороне сервера
  2. Без бизнес-логики

DTO (объект передачи данных):

Объект, используемый для передачи данных между уровнями, когда уровни находятся в разных процессах, например, из БД в клиентское приложение. Разрешает одну транзакцию по сети, а не несколько вызовов при выборке данных, соответствующих нескольким объектам домена. DTO содержит только данные и методы доступа, и в нем нет никакой логики. Данные предназначены для конкретной транзакции БД, поэтому они могут или не могут напрямую отображаться на объект домена, поскольку могут включать данные из одного или нескольких объектов домена.

  1. Используется как на стороне сервера, так и на стороне клиента, поскольку они передаются между уровнями
  2. Нет бизнес-логики
  3. Нет методов, связанных с персистентностью

Итак, вопросы:

  1. Верно ли приведенное выше понимание? Я упустил некоторые ключевые моменты?

  2. Есть ли какие-либо причины не использовать объекты домена в качестве модели MVC, предполагая, что объекты модели не требуют дополнительной бизнес-логики?

  3. Есть ли какие-либо причины не использовать DTO в качестве модели MVC предполагая, что объекты модели не требуют дополнительной бизнес-логики?

62
задан rohanagarwal 14 November 2018 в 12:00
поделиться