В чем разница между объектом модели MVC, объектом домена и DTO?
Мое понимание таково:
Объект модели MVC:
Моделирует данные для отображения в соответствующем представлении. Он может не отображаться непосредственно на объект домена, то есть может включать данные из одного или нескольких объектов домена.
- Сторона клиента
- Может содержать бизнес-логику. Например. проверки, расчетные свойства и т.д.
- Нет методов, связанных с постоянством
Доменный объект:
Объект, который моделирует реальный объект в проблемной области, такой как Резервирование, Клиент, Заказ и т.д. Используется для сохранения данных.
- Серверная сторона
- Нет бизнес-логики
DTO (Объект передачи данных):
Объект, используемый для передачи данных между слоями, когда слои находятся в отдельных процессах, например, из БД в клиентское приложение. Позволяет использовать одну транзакцию по сети, а не несколько вызовов при получении данных, соответствующих нескольким объектам домена. DTO содержит только данные и методы доступа, и здесь нет логики. Данные предназначены для конкретной транзакции БД, поэтому они могут или не могут напрямую отображаться в объекте домена, поскольку они могут включать в себя данные из одного или нескольких объектов домена.
- Используется как на стороне сервера, так и на стороне клиента, так как он передается между слоями
- Нет бизнес-логики
- Нет методов, связанных с постоянством
Итак, вопросы:
-
Верно ли понимание выше? Я упускаю некоторые ключевые моменты?
-
Есть ли какие-либо причины не использовать объекты Domain в качестве модели MVC, если предположить, что объекты Model не требуют дополнительной бизнес-логики?
-
Есть ли причины не использовать DTO в качестве модели MVC, если предположить, что объекты Model не требуют дополнительной бизнес-логики?