DDD: использование инфраструктуры из службы приложений без создания абстракции в домене?

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

Мне нужно проверить некоторые данные, которые я получаю в своей службе приложения. Чтобы проверить эти данные, мне нужно сделать http-запрос к конечной точке третьей части. Следуя DDD, я реализовал этот запрос на уровне инфраструктуры. Проблема, с которой я столкнулся сейчас, заключается в том, что я не хочу создавать абстракцию для этой реализации на уровне домена, потому что она не имеет ничего общего с какой-либо логикой объекта или домена, она предназначена только для проверки данных, которые я получаю в служба приложений. Поскольку уровень приложения не должен ссылаться ни на что из уровня инфраструктуры, потому что это более внутренний уровень, и я думаю, что мне не следует создавать абстракцию в домене, потому что он не подходит, как этого добиться?


person user2527749    schedule 20.08.2020    source источник
comment
Глядя на ваше описание, я могу ошибаться, но, похоже, вы используете ту же модель, что и ответ от стороннего api. возможно, вам придется реализовать шаблон проектирования адаптера или просто выполнить проверку на уровне IS без ущерба для модели предметной области.   -  person Guilherme Ribeiro Developer    schedule 21.08.2020
comment
Вы не стали бы создавать абстракцию на уровне домена, потому что она не имеет ничего общего с какой-либо логикой объекта или домена, или она не подходит ... Хотя это это только ваша точка зрения. Предоставляя нам более подробную информацию (например, более подробное описание компонентов или некоторый код вместе с его описанием), мы также могли бы попытаться дать вам нашу точку зрения. На первый взгляд я бы сказал, что запрос может быть инфраструктурной службой (абстрактно говоря: DataOfTypeXValidator, например) с реализацией в инфраструктуре и интерфейсом в модели.   -  person dakis    schedule 21.08.2020


Ответы (1)


Уровень инфраструктуры также зависит от уровня приложения.

Вы можете создать абстракцию (интерфейс) на уровне приложения и реализовать ее на уровне инфраструктуры.

И вы используете внедрение зависимостей во время выполнения.

person choquero70    schedule 04.10.2020