Где я должен поместить свои DTO в чистую архитектуру? - PullRequest
0 голосов
/ 18 февраля 2019

enter image description here

Необходимо реализовать чистую архитектуру и бороться с концепцией DTO.Как я понимаю, я не могу использовать свои доменные объекты на уровне представления (asp mvc), вместо этого я должен использовать DTO или viewmodel.Я не уверен, куда должны идти эти DTO.У меня есть два проекта в качестве основного уровня (домен, приложение). Домен содержит мои объекты, например: «Post» + интерфейсы репозитория, например: «IPostRepository».Приложение содержит логику, например: «IPostManager» + «PostManager».Где должны происходить сопоставления DTO и DTO с сущностями?Asp MVC, приложение или домен?

Ответы [ 3 ]

0 голосов
/ 25 февраля 2019

В вашем случае к DTO обращаются как Presentation & Domain .так что лучше иметь его Инфраструктура и отсылать его оттуда.

0 голосов
/ 26 февраля 2019

Как мы уже знаем, Dtos могут быть разных типов, которые не имеют никакого поведения и используются только для транспортировки данных, например Модель в шаблоне MVC или класс, который, вероятно, назван с суффиксом 'classNameDto'

В вашем случае это действительно зависит от того, в каком контексте вы используете прикладной уровень.Некоторые разработчики понимают, что «Сервисы приложений» более специфичны для приложения, то есть они тесно связаны с пользовательским интерфейсом.

Если это так, то это хорошее место, чтобы иметь Dtos, где данные сопоставляются с моделью домена.

Иначе, если сопоставление выполняется на веб-уровнетогда Dtos нужно идти туда.

Говоря простым языком, @Jimmy Bogard сказал: «Поместите классы ближе к месту, где они фактически используются».

Я бы также предложил подробнее ознакомиться с чистой архитектурой и посмотреть, если вынаправился в правильном направлении.

Надеюсь, это поможет:)

0 голосов
/ 25 февраля 2019

Это похоже на одно приложение.Поэтому в этом случае я размещаю свои DTO как можно ближе к месту их использования.Если это MVC, то мои DTO находятся рядом с моими представлениями:

  • Представления
    • Аккаунт
    • Index.cshtml
    • IndexModel.cs

Или, если это Razor Pages, то DTO - это просто внутренние классы.См. Мои примеры ContosoUniversity для рабочего примера:

Пример MVC

Пример Razor Pages

Это не "чистая архитектура"но "вертикальная архитектура среза", но это не должно иметь значения.Поместите классы ближе к месту их использования.

...