Dove dovrebbe essere collocata la logica di business per un progetto che utilizza Onion Architecture?
Nel mio caso, si tratta di un progetto basato su C #, che utilizza API Web e probabilmente un'interfaccia utente MVC per la presentazione. Ma potrebbe non avere importanza, dal momento che sono solo curioso di questo concettualmente.
I due diagrammi che seguono sembrano essere i più comuni che appaiono in tutto il web quando sono su Google le informazioni sull'architettura a cipolla:
Se non mi sbaglio, qualsiasi cosa al di sotto dell'anello esterno è considerata il nucleo.
Nel Diagramma # 1 il più esterno del Core (anello blu) contiene interfacce di servizio, e mostra che l'anello esterno viola ha il logging, i servizi, ecc. Ciò significa che l'esterno anello viola contiene il livello di servizio e la logica aziendale?
In Diagramma n. 2 mostra Application and Domain Services come parte di Application Core (non solo le interfacce e il modello di dominio).
Sento che questi due diagrammi sembrano definire completamente diversi l'architettura di cipolla, ma tuttavia sembrano essere i due principalmente referenziati. O sto leggendo questo sbagliato?
Forse il risultato finale non è diverso, ed è solo questione di come sto guardando il layout del progetto nella mia testa, ma ho cercato di pensare al livello di servizio come parte del Infrastruttura sull'anello esterno. È un modo sbagliato di pensarci?
Le mie classi del livello di servizio possono avere repository o altre classi di servizi iniettate. I servizi stessi possono essere iniettati nei progetti del livello di presentazione (ad esempio un'API Web o un controller MVC) e da lì convertiti in un oggetto presentabile (DTO o ViewModel) tramite Automapper.
Grazie