У чому різниця між об’єктом моделі MVC, об’єктом домену та DTO?
Я розумію:
Об'єкт моделі MVC:
Моделює дані, що відображаються у відповідному поданні. Він може не відображати безпосередньо об'єкт домену, тобто може включати дані одного або декількох об'єктів домену.
- Сторона клієнта
- Може містити бізнес-логіку. Напр. перевірки, обчислені властивості тощо
- Немає методів, пов'язаних із наполегливістю
Об'єкт домену:
Об'єкт, який моделює реальний об'єкт у проблемній області, наприклад, "Бронювання", "Клієнт", "Замовлення" тощо. Використовується для збереження даних.
- Сторона сервера
- Ніякої ділової логіки
DTO (об'єкт передачі даних):
Об'єкт, що використовується для передачі даних між шарами, коли шари перебувають в окремих процесах, наприклад, з БД в клієнтську програму. Дозволяє одну транзакцію по дроту, а не кілька викликів під час отримання даних, що відповідають декільком об’єктам домену. DTO містить лише дані та методи доступу, і логіка відсутня. Дані призначені для певної транзакції БД, тому вони можуть безпосередньо або не можуть безпосередньо зіставлятися з об’єктом домену, оскільки можуть включати дані з одного або декількох об’єктів домену.
- Використовується як на сервері, так і на стороні клієнта, оскільки передається між шарами
- Ніякої ділової логіки
- Немає методів, пов'язаних із наполегливістю
Отже, питання:
Чи правильне розуміння вище? Мені не вистачає деяких ключових моментів?
Чи є причини не використовувати об'єкти домену як модель MVC, припускаючи, що об'єкти моделі не потребують додаткової ділової логіки?
Чи є причини не використовувати DTO як модель MVC, припускаючи, що об’єкти Model не потребують додаткової бізнес-логіки?