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