Где должны быть объявлены объекты передачи данных (DTO) в многоуровневом приложении с использованием DDD

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

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

Итак, обычно ли на прикладном уровне должны быть объявлены DTO?

Заранее спасибо.

Обновление: 25 февраля 2016 г. Я буду определять интерфейсы для своих служб приложений на уровне служб приложений на основе следующей цитаты из Руководства по архитектуре приложений .NET, 2-е издание: «На уровне служб вы определяете и реализуете службу. интерфейс и контракты данных»..


person Robertcode    schedule 25.02.2016    source источник


Ответы (1)


Поскольку DTO используются для передачи данных из вашего приложения, например. клиентских приложений, они должны быть объявлены на уровне, который обрабатывает вызовы службы для вашего приложения (самый внешний уровень). Называете ли вы это прикладным уровнем или как-то еще (в моей компании мы называем это «сервисным уровнем»), решать вам.

person Don Ho    schedule 25.02.2016
comment
Спасибо Адриан. Я согласен с вашим ответом. Я только что нашел ответ также в Руководстве по архитектуре приложений .NET, 2-е издание в разделе «Руководящие принципы уровня обслуживания», где говорится следующее: на уровне обслуживания вы определяете и реализуете интерфейс службы и контракты данных... - person Robertcode; 25.02.2016
comment
@Robertcode извините, я только что отредактировал ответ и поставил запятую. Ответ написал «donat3llo» :-) - person Adrian Thompson Phillips; 25.02.2016