Домен-управляемый дизайн: где находится DTO? - PullRequest
0 голосов
/ 29 октября 2018

У меня проблема с архитектурой доменного управления. Все выглядит хорошо, пока я не попробую использовать REST. Я должен использовать DTO вместо сущности на внешнем интерфейсе.

Моя архитектура выглядит так: enter image description here

Мой вопрос:

Должен ли я использовать веб-модуль и придерживаться его в DTO? Это правильный подход?

Ответы [ 4 ]

0 голосов
/ 01 ноября 2018

В идеале, модели предметной области должны создаваться фабриками. Таким образом, фабрики могут принять DTO и вернуть экземпляр модели домена. Или вы можете использовать шаблон Builder, который принимает DTO для создания модели предметной области. Таким образом, ваша модель домена будет очищена от DTO, а прикладной уровень на диаграмме вашей архитектуры должен принимать DTO в качестве параметров.

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

0 голосов
/ 30 октября 2018

Вы должны видеть REST как один из многих «портов», позволяющих получить доступ к сервисам уровня приложений. Службы REST, RPC, Websocket и т. Д. Будут адаптироваться и отображать входные данные для вызовов уровня приложения и наоборот. На каждой границе службы вы по-прежнему можете адаптировать ответы, что не обязательно должно иметь соответствие 1-1 с ответами метода службы приложения, но может.

0 голосов
/ 30 октября 2018

Согласно книге Вон Вернона "Внедрение доменного управления", DTO живут на прикладном уровне.

0 голосов
/ 30 октября 2018

enter image description here

  • DDD относится в основном к изолированным монолитным системам или, по крайней мере, не охватывает аспекты межсистемной связи.

Поэтому, даже если вы работаете «в соответствии с DDD», вам придется принимать решения - как обращаться с этими аспектами.

Ссылка: список шаблонов, введенных в книгу DDD, с их отношениями: enter image description here

...