ASP.NET Core MVC è un framework utilizzato per implementare applicazioni web e API. Esso adotta il modello di progettazione MVC che permette di separare un’applicazione nei tre ambiti denominati rispettivamente Model, View e Controller. Le richieste degli utenti vengono instradate a un Controller che, di concerto con il Model, determina l’esecuzione delle azioni dell’utente e/o ottiene i risultati delle interrogazioni. Il Controller determina la View da mostrare all’utente fornendole, all’occorrenza, il Model di dati richiesto.
La separazione in ambiti rende l’applicazione più semplice da scalare in quanto ogni suo componente svolge un lavoro specifico. Ad esempio, la logica dell’interfaccia utente tende a cambiare più spesso rispetto a quella di Business. Se entrambe si trovano in un singolo oggetto, il rischio è quello di inserire errori nella logica di Business tutte le volte che si apportano cambiamenti a quella dell’interfaccia.
Da notare che sia la View che il Controller dipendono dal Model. Il Model non dipende né dalla View né dal Controller. Ciò determina una assoluta indipendenza in fase di implementazione e di test del Model.
Ambito di azione del Model
Il Model contiene la logica di Business e qualunque operazione possa essere eseguita dall’applicazione. Il suo campo d’azione comprende anche l’implementazione della logica deputata al mantenimento dello stato dell’applicazione stessa. Le View fortemente tipizzate utilizzano i tipi ViewModel progettati per contenere informazioni da mostrare. Il Controller crea e popola le istanze del ViewModel attraverso il Model.
Ambito di azione della View
Le View mostrano il contenuto attraverso l’Interfaccia Utente. Esse utilizzano il motore di visualizzazione Razor che incorpora codice .NET in quello di markup HTML. La sola logica presente nelle View dovrebbe essere quella relativa alla presentazione del contenuto. Nel caso in cui si abbia necessita di eseguire una quantità considerevole di logica in una view, sarebbe opportuno considerare l’utilizzo di View Component o di ViewModel.
Ambito di azione del Controller
Il Controller si occupa di gestire gli input e le interazioni provenienti dagli utenti: lavora insieme al Model e seleziona la View da mostrare. Esso rappresenta il punto d’ingresso, è responsabile della selezione del tipo di Model con cui andrà a lavorare e seleziona la View da mostrare.