Ecco un'implementazione di esempio che utilizza l'architettura di Onion: link
La pagina web suggerisce una struttura della soluzione di:
Domain - Solution Folder
Domain.Entities - Class Library Project
Domain.Interfaces - Class Library Project
Service Interfaces - Solution Folder
Service.Interfaces - Class Library
Services - Solution Folder
Services - Class Library Project
Infrastructure - Solution Folder
Infrastructure.Data - Class Library Project
User Interface - Solution Folder
MVC - MVC Project
Ho alcune domande:
-
Perché ci sono due cartelle di soluzioni nel livello di servizio? cioè Servizi e Servizi. Interfacce. Credo che ci dovrebbe essere uno come nel livello di dominio, ad esempio la cartella di soluzione di dominio contiene due progetti di libreria di classi (Domain.Entities e Domain.Interfaces). Normalmente lo considererei un errore, tuttavia ho visto altri progetti strutturati in questo modo.
-
Perché il livello di dominio e servizi è diviso in due progetti di librerie di classi (perché non avere un solo progetto di libreria di classi in ogni classe contenente e librerie).
-
Questa domanda afferma che TUTTE le interfacce dovrebbero essere contenuto nel livello del dominio. Tuttavia, tutti gli esempi di codice che ho esaminato inseriscono le interfacce del livello di servizio nel livello di servizio. Dovrebbero andare nel livello di servizio o nel livello di dominio?