Соответствует ли внешний сервис (API) определению DDD репозитория? - PullRequest
0 голосов
/ 03 января 2019

Я не нашел ничего конкретного по этой теме от гуру, кроме

Существуют и другие способы реализации антикоррупционного слоя, например, с помощью репозитория (12).Однако, поскольку репозитории обычно используются для сохранения и восстановления агрегатов, создание объектов значений с помощью этих средств кажется неуместным.Если нашей целью является получение Агрегата из Антикоррупционного слоя, хранилище может быть более естественным источником.

от Вернона Вона.

Что меня беспокоит, так это в основном ORM/ запросы используются в качестве примеров хранилищ в литературе DDD.Мой проект очень скуден в доменной логике, потому что он в основном является оберткой для пары API и объединяет результаты этих контекстов.Обязанности проекта являются широкими и могут соответствовать многим областям / контекстам бизнеса в целом.Единственное архитектурное правило, навязанное с самого начала, - это луковая архитектура, и, по крайней мере, концепции технического моделирования DDD мне подходят.Я должен сказать, что трудно рассуждать о домене в этом конкретном текущем проекте.

Ответы [ 3 ]

0 голосов
/ 04 января 2019

возьмем современный JavaScript-сайт в качестве примера.У вас будет много вызовов REST для создания / поиска / обновления / удаления объектов вашего домена.

В случае серверного приложения у вас будет база данных и реализация DAO в качестве клиентского интерфейса для вашегобаза данных.В вашем веб-приложении вы также будете иметь некоторую функциональность REST-клиента в качестве клиентского интерфейса для вашего серверного приложения.Оба считаются репозиториями, независимо от того, имеет ли реализация клиентского интерфейса доступ к данным в вашей базе данных / на вашем сервере / в вашей файловой системе и т. Д.

0 голосов
/ 10 января 2019

DDD касается только домена. Детали того, как ваше приложение сохраняет сущности, не имеют значения. Вот почему вы определяете интерфейс (в случае .NET) вашего репозитория в вашем домене, но фактическая реализация является частью инфраструктуры вашего кода.

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

DDD говорит, дай мне интерфейс для работы. Как ты это делаешь, это твоя проблема. Вы можете эффективно сохранять свои объекты, используя внешний API (например, Twitter API), текстовый файл, ORM (прямое соединение с базой данных). ДДД не волнует.

0 голосов
/ 03 января 2019

Соответствует ли внешняя служба (API) определению DDD для репозитория?

Может быть?

REPOSITORIES для середины и конца [жизненный цикл объекта домена, предоставляющий средства для поиска и извлечения постоянных объектов, в то же время инкапсулируя огромную инфраструктуру.

Репозиторий - это шаблон, мотивируемый понятием разделения интересов - вам не следуетПри работе с логикой домена приходится суетиться с деталями постоянства.

...