Има ли смисъл да групирате всички интерфейси на вашия домейн слой (модули, модели, обекти, домейн услуги и т.н.) всички в рамките на инфраструктурния слой? Ако не, има ли смисъл да се създаде "споделен" проект/компонент, който групира всичко това в споделена библиотека? В края на краищата дефиницията на „инфраструктурен слой“ включва „споделени библиотеки за слоеве на домейн, приложение и потребителски интерфейс“.
Мисля да проектирам кодовата си база около DDD слоевете: потребителски интерфейс, приложение, домейн, инфраструктура. Това би създало 4 проекта с уважение. Мисълта ми е, че препращате към инфраструктурния слой от домейн слоя. Но ако дефинирате интерфейсите в проекта Domain Layer, да речем за IPost, тогава ще имате кръгова препратка, когато трябва да препратите към проекта Domain Layer от проекта Infrastructure, когато дефинирате метода IPostRepository.Save(IPost post) . Следователно идеята за „дефиниране на всички интерфейси в споделената библиотека“.
Може би хранилищата не трябва да очакват обект за запис (IPostRepository.Save(IPost post); но вместо това очаквайте параметрите на обекта (това обаче може да бъде дълъг набор от параметри в Save()). Като се има предвид, това може да бъде идеална ситуация, която показва кога даден обект става прекалено сложен и трябва да се търсят допълнителни стойностни обекти за него.
мисли?