Подтвердить что ты не робот

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

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

Мое понимание таково:

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

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

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

Доменный объект:

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

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

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

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

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

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

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

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

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

4b9b3361

Ответ 1

Объекты домена и модели по существу одинаковы и могут содержать бизнес-логику. В зависимости от реализации объекты домена и DTO могут быть эквивалентны, если вы удаляете бизнес-логику из модели в класс службы.

Часто ключевым вариантом DTO является модель просмотра, которая используется исключительно для передачи данных между моделью домена и представлением, хотя часто модель просмотра может содержать логику, хотя это должно быть чисто логикой пользовательского интерфейса.

Ответ 2

Домен и DTO также могут быть вашими "образными" объектами - вы можете иметь представление, чтобы отображать детали объекта домена "Клиент".

Объект домена может иметь бизнес-логику для обеспечения свойств объекта домена. Валидация - один такой случай. Объект домена сам по себе не содержит методов, связанных с сохранением, но он может иметь метаданные (например, аннотации) для поддержки сохранения

модель программирования POJO позволяет использовать тот же объект, что и объекты вашего домена, DTO и модели, - по сути, вы не будете реализовывать какие-либо посторонние интерфейсы, которые будут применяться только к одному слою, но не применяются к другим.

Ответ 3

A DTO = is an object that carries data between processes.

Но самая интересная часть заключается в том, что у нее нет никакого поведения, кроме хранения и извлечения собственных данных!!!

Придерживаясь методологии MVC...

Domain = subject of your entire application.

Model = contains the (programming languages objects : EX: C# objects) to make up the universe of your application.

Они могут явно иметь поведение и свойства (см. разницу с DTO).

Часто приложение (легкое) может иметь одну модель - случай, когда ваша модель является именно вашим доменом.  Еще одной моделью может быть целый тип объекта, который обрабатывает другой. Оба они, в данном случае, являются частью вашего домена и называются "предметные модели - объекты".

Надеюсь, этот ответ будет исчерпывающим и сделает все для вас понятным!

Ответ 4

Любое определение для большинства объектов различается в зависимости от места использования объектов:

Model: это общее определение для использования объекта в клиенте или на сервере.

  1. Model View: объект, который используется в client большую часть времени.
  2. Domain Object: это объект, который используется на server и transfering data to the database.
  3. Data Transfer Object(DTO): это объект, который передает данные от одного объекта к другому объекту, особенно при получении данных в API Call (например: в вызове метода GET API для получения данных, вы не должны передавать модели базы данных клиенту, для Для этого вы используете dto).

Обратите внимание: the definitions are true most of the time но в некоторых ситуациях они не практичны.

Ответ 5

1) Нет, это определение ViewModel. Объект объекта MVC и объект домена оба одинаковы.
2) Доменные модели (объекты) всегда присутствуют, бизнес-логика является необязательной. 3) Если в объекте Domain нет бизнес-логики, автоматически становится DTO.

Ответ 6

Мое понимание (в большом коротком) следующее:

(MVC) Модельный объект:

  • представлять некоторые вещи в некотором контексте использования, например. PersonEditModel, PersonViewModel или просто PersonModel
  • не имеет бизнес-логики
  • может быть предметом некоторой логики оценки и т.д.
  • используется для предоставления данных с одного прикладного уровня на другой, например. MVC Controller <-> MVC View

Доменный объект:

  • представляет некоторый бизнес-объект (объект реального мира в проблемной области)
  • имеет бизнес-логику
  • не разрешать недопустимое состояние объекта, имеет методы для правильного изменения состояния объекта
  • используется для инкапсуляции бизнес-логики, связанной с ней
  • не должны использоваться для сохранения данных (или даже не должны)

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

  • похож на объект модели, но должен иметь плоскую структуру
  • только свойства/поля простого типа (строки, числа, дата-время, логические значения)
  • используется для передачи данных через границы приложения, например. между веб-сервером и веб-браузером