Le persone spesso affermano di stare seguendo un'architettura a tre livelli (o n-tier), e talvolta affermano di passare a un modello di dominio. Ma davvero non ho mai capito cosa sia questa mitica 'architettura a 3 livelli'. Sembra non avere una definizione formale. Considerando che ci sono numerosi riferimenti ed esempi che spiegano e dimostrano il modello del modello di dominio, qualsiasi riferimento al livello 3 suggerisce semplicemente di separare il codice in UI, Business Logic e Data Access Layer. E questo è tutto ciò che sembrano dire.
Ciò che trovo particolarmente strano è che, per me, il modello di dominio è la perfetta incarnazione di questo paradigma a tre livelli. l'ORM e i file di mapping sono il livello di accesso ai dati, il dominio è la logica aziendale e l'interfaccia utente è, beh, l'interfaccia utente. Quindi perché le persone parlano come se fosse qualcosa di nuovo e diverso, e qualcosa a cui dovrebbero passare?
Prima di vedere le persone che implementavano il modello di dominio, la maggior parte delle applicazioni erano interfacce utente che accedono alle stored procedure con la divisione logica nell'interfaccia utente e negli SP. A volte c'erano alcuni assembly chiamati "UI", "BLL" e "DLL", ma di solito questi erano solo dei mediatori tra le UI e gli SP, lasciando più spazio per la logica da distribuire in modo casuale.
Quindi cos'è questa mitica architettura "a tre livelli"? Esiste davvero? e se sì, dove sono alcuni esempi di esso implementato bene?