Ha senso raggruppare tutte le interfacce del livello di dominio (moduli, modelli, entità, servizi di dominio, ecc.) All'interno del livello infrastruttura? In caso contrario, ha senso creare un progetto/componente "condiviso" che raggruppa tutti questi elementi in una libreria condivisa? Dopo tutto, la definizione di "Infrastructure Layer" include "librerie condivise per livelli di dominio, applicazione e UI".DDD: dove conservare le interfacce di dominio, l'infrastruttura?
Sto pensando di progettare la mia base di codice attorno ai livelli DDD: interfaccia utente, applicazione, dominio, infrastruttura. Ciò creerebbe 4 progetti rispettosamente. Il mio punto è, si fa riferimento al livello di infrastruttura dal livello di dominio. Ma se definisci le interfacce nel progetto Domain Layer, ad esempio per IPost, avrai un riferimento circulur quando devi fare riferimento al progetto Domain Layer dal progetto Infrastructure quando definisci il metodo IPostRepository.Save (IPost post) . Quindi, l'idea di "definire tutte le interfacce nella libreria condivisa".
Forse gli archivi non dovrebbero aspettarsi un oggetto da salvare (IPostRepository.Save (post IPost), ma invece, si aspettano i parametri dell'oggetto (che potrebbe essere un lungo set di parametri nel Save()). , questo potrebbe essere una situazione ideale che mostra quando un oggetto sta diventando eccessivamente complesso, e ulteriori oggetti di valore dovrebbe essere esaminato per esso.
Pensieri?
Excellent Geobarteam .Questo mi ha dato un momento "duh" Sì, definire le interfacce nel dominio, i repository devono essere implementati in assembly separati (MySqlProviver, MsSqlProvider, XmlProvider, ecc.) E un certo tipo di Container IOC (Castle Windsor I love) veniva utilizzato per collegarlo al livello App. Perfetto – eduncan911
Nel caso di ASP.NET MVC, è in realtà facile iniettare il repository nel Controller (UI strato) tramite Castle Windosr, Steven Sanderson ne ha avuto un buon esempio in ASP.NET MVC Framework Preview -Driven Design Prenota rapidamente Ho detto che l'interfaccia utente, l'app e il dominio possono tutti utilizzare l'infra. – eduncan911
L'unico problema che ho con questo è che il mio libro dice che Infrastructure non fa mai riferimento a nulla. UI-> App, Domain e Infra. App-> Dominio e Infra. E, Dominio-> Infra. So che lo so, suppongo che siano tutte le linee guida comunque. – eduncan911