Nota: BLL = Business Logic Layer (può anche significare il tuo dominio)
Sto cercando di capire l'architettura della cipolla. Mi sembra che sia effettivamente la stessa cosa dell'architettura a strati, solo con il principio di inversione di dipendenza (DIP) applicato. Ad esempio, questa è la tipica architettura a più livelli (le frecce rappresentano le dipendenze):
UI > BLL > DAL
Nota: ciò è semplificato e non dovrebbe implicare che DIP non possa / non venga utilizzato con esso. DIP significa semplicemente che dovremmo dipendere dalle astrazioni.
Questo è il tipico flusso di cipolla (anche semplificato):
UI > BLL < DAL
Si noti che l'ultima freccia è invertita. Il BLL ha le astrazioni, quindi sono al centro della cipolla e gli altri livelli lo fanno riferimento. Articolo di cipolla: link
Dato che sono abituato all'architettura a più livelli, volevo vedere come sarebbe il flusso se avessi combinato quello con DIP. Eccolo:
UI > [interfaccia] < BLL > [interfaccia] < DAL
Eccellente diagramma di DIP, che rispecchia questo. link
Ecco un articolo che spiega la differenza tra strati e cipolla. Mi ha fatto avere le domande che ho presentato sopra. link
Quindi la mia domanda è: qual è la differenza tra l'architettura a cipolla e l'architettura a strati con DIP? Ce n'è uno?
La mia domanda è stata contrassegnata come possibile duplicato di questo: Architettura onion vs architettura a 3 livelli Il mio è diverso perché voglio sapere se c'è davvero qualcosa come l'architettura della cipolla. Se affermi che l'architettura della cipolla è a strati + DIP, la cipolla esiste davvero? O vorrebbe dire che la cipolla è solo una versione di strati, come stratificata con cattive pratiche?