В DDD репозитории представляют собой виртуальную коллекцию сущностей (в частности, агрегированные корни). Таким образом, если у вас есть 10M постоянных клиентов, вы будете работать с репозиторием , как если бы это был набор всех 10M в памяти. Хранилища, как правило, работают только с теми же типами операций, которые можно найти в коллекции: добавить что-либо, удалить что-либо, найти что-то в коллекции.
Если фактическое сохранение данных происходит через веб-службу, реализация хранилища может взаимодействовать с прокси-сервером веб-службы, а не с базой данных. Однако тот факт, что постоянство включает в себя веб-службу, не влияет на то, как это должно выражаться вашим доменом. То есть, сохраняются ли данные с помощью прямых вызовов базы данных, ORM, веб-службы или почтового голубя.
Теперь, если ваша модель домена имеет зависимости, которые должны поддерживаться внешними службами (например, проверка кредитной карты, проверка адреса и т. Д.), Это должно быть выражено как служба домена в форме интерфейса, который определяет необходимые операции с точки зрения доменной модели . Чтобы быть ясным, доменные службы - это операции, которые логически являются частью вашего домена, но по той или иной причине не подходят точно для данного объекта или объекта значения. Поведение, поддерживаемое внешней службой, является лишь одним примером того, когда вы можете использовать доменную службу, поэтому не думайте о доменных службах как о «шаблоне хранилища для веб-служб» или о чем-то подобном.