L'utente interagisce con la vista , ma la vista deve comunicare le azioni al controller . Il controller può aggiornare il modello , ma non è necessario per ogni / qualsiasi modifica.
La descrizione che sto fornendo si basa sulla mia esperienza personale con l'implementazione .NET di MVC. L'implementazione può essere diversa.
Il controller è il luogo in cui vengono elaborate le azioni, sostanzialmente un livello aziendale. Un semplice controller non farà altro che ottenere i dati dal Modello per alimentare la Vista. Un controller complicato eseguirà tutti i tipi di azioni, fino alla gestione della sicurezza, autenticazione, autorizzazione, registrazione e forse molte altre cose.
La vista dovrebbe essere responsabile solo per la visualizzazione delle informazioni in un modo che l'utente possa capire. Possono esserci degli incroci qui sia con il Controller che con il Modello poiché cose come Single Page Applications (SPA) avranno un feedback di convalida dei dati per l'utente. Qualsiasi altro incrocio è fortemente disapprovato.
Il modello tratta i dati. Ciò include la convalida dei dati (ove applicabile). Anche l'archiviazione e il recupero dei dati sono gestiti in questo livello.
AGGIORNARE
Sembra esserci un po 'di confusione intorno a chi fa cosa quando. Ho incluso due diverse panoramiche delle architetture MVC perché sono simili, ma non uguali. C'è spazio per entrambe le interpretazioni. Forse, molti altri. Le descrizioni sopra sono la mia interpretazione di MVC da più fonti, inclusa la mia esperienza nella costruzione di applicazioni usando questa metodologia. Speriamo che questo aggiornamento aiuti a chiarire un po 'di questa confusione.
MVC è un tentativo di creare un modello di progettazione di Separazione delle preoccupazioni per lo sviluppo del software. È stato principalmente implementato in applicazioni basate sul web (per quanto ne so).
La vista gestisce tutte le interazioni dell'utente. Se l'utente fa clic su un pulsante, la vista determina se il clic è un'interazione dell'interfaccia utente o qualcosa che è al di fuori della sua preoccupazione (un'interazione del controller). Se il pulsante fa qualcosa come copiare i valori da un campo all'altro, l'implementazione determinerà se si tratta di un problema di visualizzazione o di un controller. Molto probabilmente avrai questa confusione di preoccupazioni solo quando hai a che fare con un'applicazione a pagina singola (SPA).
Il controller è dove vengono elaborate le tue azioni. La vista ha comunicato all'utente che ha deciso di modificare i valori per alcuni campi. Il Titolare può eseguire la convalida su tali dati o può essere gestito dal Modello. Anche in questo caso dipende dall'implementazione. Se il controller ha funzionalità di sicurezza, è possibile che l'utente non disponga di privilegi sufficienti per eseguire l'azione. Rifiuterebbe le modifiche e aggiornerebbe la vista di conseguenza. Il controller determina inoltre quali dati recuperare dal modello, come impacchettarli e aggiornare la vista con tali dati.
Il modello determina come e dove archiviare i dati. Può anche eseguire la convalida di tali dati prima di memorizzarli (dovrebbe farlo perché le persone bypassano la vista in determinate occasioni).
Wikipedia ha un articolo su MVC .
- Un modello notifica le viste / viste e i controller associati quando si è verificato un cambiamento nel suo stato. Questa notifica consente alle viste di aggiornare la loro presentazione e i controller di modificare il set di comandi disponibile. In alcuni casi un'implementazione MVC potrebbe invece essere "passiva", pertanto altri componenti devono eseguire il polling del modello per gli aggiornamenti piuttosto che ricevere una notifica.
- Il controller comunica una vista a tutte le informazioni necessarie per generare all'utente una rappresentazione di output. Può anche fornire meccanismi generici per informare il controller dell'input dell'utente.
- Un controller può inviare comandi al modello per aggiornare lo stato del modello (ad esempio, modificando un documento). Può anche inviare comandi alla vista associata per modificare la presentazione della vista del modello (ad esempio, scorrendo un documento).
Dalla panoramica di Microsoft su MVC .
Modelli. Gli oggetti modello sono le parti dell'applicazione che implementano la logica per il dominio dei dati dell'applicazione. Spesso, gli oggetti modello recuperano e memorizzano lo stato del modello in un database. Ad esempio, un oggetto Prodotto potrebbe recuperare informazioni da un database, operare su di esso e quindi riscrivere le informazioni aggiornate in una tabella Prodotti in un database SQL Server.
Nelle piccole applicazioni, il modello è spesso una separazione concettuale anziché fisica. Ad esempio, se l'applicazione legge solo un set di dati e lo invia alla vista, l'applicazione non ha un livello di modello fisico e classi associate. In tal caso, il set di dati assume il ruolo di un oggetto modello.
Visualizzazioni. Le viste sono i componenti che visualizzano l'interfaccia utente (UI) dell'applicazione. In genere, questa interfaccia utente viene creata dai dati del modello. Un esempio potrebbe essere una vista di modifica di una tabella Prodotti che visualizza caselle di testo, elenchi a discesa e caselle di controllo basate sullo stato corrente di un oggetto Prodotto.
Controller. I controller sono i componenti che gestiscono l'interazione dell'utente, lavorano con il modello e alla fine selezionano una vista da visualizzare che mostra l'interfaccia utente. In un'applicazione MVC, la vista mostra solo informazioni; il controller gestisce e risponde all'input e all'interazione dell'utente. Ad esempio, il controller gestisce i valori della stringa di query e passa questi valori al modello, che a sua volta potrebbe utilizzare questi valori per interrogare il database.