Avevo una discussione con un collega e ha acquistato l'argomento di MVC e l'uso di ViewModels in ASP.NET MVC.
La discussione era che, in un'architettura a livello di n, l'interfaccia utente, il livello aziendale e il livello di accesso ai dati sono singoli assiemi / progetti e ViewModels sono la rappresentazione dell'interfaccia utente di un database / oggetto business. La discussione sull'utilità di ViewModel è stata spostata in una discussione su come applicare MVC.
Nella mia versione (che è ciò che sono abituato a / ho visto altrove) prende in considerazione la separazione di preoccupazioni e dipendenze cascata, in cui il progetto dell'interfaccia utente fa riferimento alla BLL, la BLL fa riferimento al DAL e forse tutti fanno riferimento a un " Entità "progetto. "MVC" è limitato all'interfaccia utente. Cioè, la nozione di "Modelli" (nella mia versione, sono tecnicamente solo ViewModels), "Visualizzazioni" e "Controllori" sono singoli file / oggetti nel livello dell'interfaccia utente. La BLL parla in termini di entità database e l'interfaccia utente contiene generalmente helper che associano un ViewModel a un'entità.
La versione del mio collega l'ha presa a livello di sistema / livello, dove il "Modello" è il DAL, la "Vista" è l'intera UI ei "Controllori" sono la BLL nel suo insieme.
Dato che in una triade MVC, il Modello non è a conoscenza di viste o controllori, le Viste sanno di Modelli e i Controller sanno di entrambi .. l'applicazione a livello di sistema di MVC non viola i concetti di programmazione modulare / riusabilità del codice (ignorando i possibili problemi di dipendenza circolare)?
I pattern come MVC sono applicati spesso a livello di sistema? La mia comprensione era che MVC e i relativi pattern erano più spesso applicati esclusivamente all'interfaccia utente e non si estendevano su un intero sistema n-layer.
A proposito, abbiamo dato un'occhiata a questa domanda: Che cos'è MVC, davvero?
.. ma sembra anche che non siamo d'accordo su quale argomento le risposte a questa domanda supportino! :)
Potrei essere solo bloccato nel mio piccolo mondo orientato a .NET e non riesco a vedere l'immagine più grande, quindi mi piacerebbe sentire alcune riflessioni su questo.