Questo è come chiedere qual è la differenza tra una mela e un nucleo di mela. Queste due architetture non sono sostituzioni l'una dell'altra. Penso che una visione più accurata sia che l'architettura a 3 livelli aumenta MVC.
Architettura MVC
-
Modelli: rappresentano "roba" nella tua applicazione. Questo strato è diventato un po 'sfocato negli ultimi anni, come spiegherò più avanti.
-
Visualizzazioni: l'interfaccia utente. La cosa con cui l'utente interagisce.
-
Controller: il codice di programmazione che risponde all'utente e alle modifiche nel livello del modello
L'architettura a 3 livelli
Con l'architettura a 3 livelli, hai livelli con responsabilità diverse.
-
Servizi utente: (o "servizi" in generale) Questo livello riguarda più il coordinamento del recupero e le modifiche del livello "modello". Qui vengono eseguite complesse azioni multi-passo
-
Livello aziendale: rappresenta le regole aziendali incise nel codice di programmazione. Ciò che "The Business" vuole è applicato in questo livello.
-
Livello di accesso ai dati: una o più classi responsabili dell'accesso a un archivio dati persistente.
L'unica parte dell'architettura a 3 livelli che si interseca con MVC è "Business Layer". I "Modelli" in MVC e il "Business Layer" nell'architettura a 3 livelli stanno cercando di raggiungere lo stesso obiettivo.
La "M" in MVC è diventata sfocata
Il livello "modello" in MVC si è espanso negli ultimi anni. Da quello che ho visto, ci sono due, forse tre tipi di modelli:
-
Modelli di dominio: rappresentano le "cose" di cui si occupa "The Business": il dominio aziendale. Queste classi contengono dati e tutte le procedure che operano su tali dati al fine di applicare le regole aziendali. Spesso i modelli di dominio sono legati alle tabelle in un database. Questo sembra adattarsi al "Business Layer" dell'architettura a 3 livelli.
-
Visualizza modelli: Queste sono le classi utilizzate per massaggiare i dati dai modelli di dominio in qualcosa di più appetibile alla vista. Questo non si adatta all'architettura a 3 livelli poiché i modelli di visualizzazione non implementano la logica aziendale né forniscono alcun tipo di servizio o accesso ai dati.
-
Modelli aziendali: in applicazioni complesse, sorge la necessità di disaccoppiare il modello di dominio dalla logica aziendale. I modelli aziendali contengono dati e procedure che operano su tali dati per implementare le regole aziendali e i modelli di dominio sono relegati su "Borse di proprietà" - oggetti che contengono solo dati ma non contengono alcun comportamento. I modelli di dominio diventano un'altra forma di oggetto di trasferimento dati tra il database e l'applicazione.
In nessun luogo in MVC è menzionato l'accesso ai dati. In alcuni casi, vedrai che l'accesso ai dati appartiene al livello "modello" di MVC, che come abbiamo visto non è più un livello ben definito. Vedo davvero un'architettura a 3 livelli associata con MVC per creare un'intera applicazione. Uno aumenta o migliora rispetto all'altro:
- Modelli
- Modelli di dominio (MVC / 3 livelli)
- Visualizza modelli (MVC)
- (facoltativamente) Modelli aziendali (MVC / 3 livelli)
- Visualizzazioni (MVC)
- Controller (MVC)
- Accesso ai dati (3 livelli)
- Servizi (3 livelli)
Ci sono alcune intersezioni, ma sono in gran parte separate, e insieme sono usate per disaccoppiare e isolare vari componenti di un sistema più grande.