Я читаю о репозиториях в доменно-управляемом дизайне и шаблонах Microsoft для архитектуры микросервисов, и они оба согласны, что у меня должен быть один репозиторий на совокупный корень. Я в целом согласен с этим, однако у меня есть проблема с именами.
Совокупность в хранилище как ...
Сущность для ???
Значение равно ???
В моем конкретном сценарии у меня есть хранилище для объекта Product в контексте маркетингового веб-сайта.
Продукт - это совокупность сущности маркетинговой информации ProductInfo (Aggregate Root), списка сущностей ProductSpecs и ShippingInfo, а также список ссылок на значения RelatedProduct для других ограниченных контекстов.
Теперь в моем репозитории я должен собрать вместе данные из разных сущностей и объектов-значений, чтобы получить совокупный корень.
Я получаю ProductInfo (root) и RelatedProducts (значение) из CMS.
ProductSpecs (сущность) и ShippingInformation (сущность) происходят из остатков apis (микросервисы, которые обрабатывают другие ограниченные контексты).
В моей первой попытке я создал репозитории / интерфейсы / доменные pocos для всех сущностей, а затем слой UI отобразил их в viewmodels для отображения. По сути, создание Агрегата для каждой сущности, однако сущности имеют форму объектов доступа к данным (потому что на данный момент они есть), и эти проблемы просачиваются в мой домен. Если и когда мы обесценим Shipping Api и перенесем его в CMS, мне придется удалить и обновить репозитории / интерфейсы, а затем обновить все в уровне пользовательского интерфейса, который касается всех этих объектов, потому что я изменил местоположение, где я что-то хранил.
Моя текущая попытка состоит в том, чтобы сделать агрегат немного больше, чтобы лучше представлять, как система использует объект, а не как он хранится, но я чувствую, что застрял в том, как назвать классы, которые предоставляют сущности и ценности и как их спроектировать.
Мне нужна моя CMS и логика запросов Api в отдельных проектах / библиотеках, чтобы их можно было повторно использовать, мне нужен репозиторий, который объединяет объекты доступа к данным для создания агрегатов. Как я называю классы в проектах запросов CMS и Api? Есть ли название для шаблона, который я должен использовать?