Является ли Domain Layer подходящим местом для сопоставленных объектов (DTO)?
У меня есть несколько объектов Mapped [Entities] в моем доменном слое, которые должны использоваться моим веб-сервисом, который предоставляет эти отображенные объекты для внешнего мира. Где находится правильное место для этих сопоставленных объектов? Как бы вы структурировали свои сопоставленные объекты и где их правильное расположение?
Мой проект - это проект MVC5 .NET, который использует framework6 и имеет следующие уровни:
UI + Application Layer Domain Layer (Entities.MappedObjects - это место, куда я сейчас поместил сопоставленный объект). Инфраструктурный уровень (выполняет всю работу по подключению и доступу к БД)
2 ответа
Если вы следовали подходу Code First, то ваши объекты доменной модели (которые являются наиболее важной частью доменной модели) совпадают с Entities.MappedObjects.
Таким образом, они принадлежат к уровню домена.
В подходе Code First ваш объект не зависит от постоянства, в то время как в подходе Database First вы теряете гибкость чистой модульности вашей архитектуры, потому что ваши Объекты являются просто таблицами базы данных, а у вас проблемы постоянства просачиваются в другие уровни.
Если вы отделяете объекты модели от DTO, которые предоставляет ваш веб-сервис, то ваши DTO (ваши MappedObjects
) должен находиться на уровне службы, а не на уровне домена.
Если MappedObjects
являются вашими фактическими объектами домена, и вы не возражаете передать свой домен "внешнему миру" через службу, тогда они могут быть в порядке там, где они есть у вас прямо сейчас.