Я что-то не так понял?
Мне кажется, что вы ошиблись, имея два хранилища данных для одних и тех же данных.
Если действительно существует веская причина для такой избыточности, два агрегата должны каким-то образом отличаться, и это может оправдать их рассмотрение как отдельных агрегатов и наличие двух репозиториев.
Если вы хотите рассматривать их как единый агрегат, единый репозиторий должен знать, как устранить неоднозначность и работать с правильным хранилищем данных, но инкапсулировать эти знания о хранилищах данных вдали от вашей предметной модели.
ИЗМЕНИТЬ:
В ситуации, описанной в комментариях, когда одно хранилище данных доступно только для чтения, а другое представляет собой локальную модифицируемую копию, наличие двух хранилищ данных фактически вынуждено. Ваш репозиторий должен знать об обоих хранилищах данных и использовать удаленное хранилище только для чтения, только если он не находит что-то локально. Сразу после извлечения чего-либо с удаленного компьютера он должен сохранить это на локальном компьютере, а затем использовать локальную копию.
Эта логика является своего рода кеширующим прокси, но не совсем так, поскольку удаленный сервер доступен только для чтения, а локальный — для чтения и записи. Он может содержать достаточно логики для извлечения в службу, используемую репозиторием, но не должен предоставляться домену.
Эта ситуация также имеет некоторые риски, о которых вам нужно подумать. После того, как вы сохранили что-то локально, у вас есть две версии одних и тех же данных, которые не синхронизируются. Что делать, если кто-то с доступом на запись на удаленном компьютере изменит его после того, как вы изменили свой локальный?
person
Don Roby
schedule
14.03.2011