Pensa ad MVC come a un sistema modulare (a moduli).
Ogni modulo è formato da un Controller, un Model (Mapper + Model) e le View
Ogni modulo gestisce le iterazioni tra utente e db (più qualche ri-elaborazione dati).
Ogni tabella del db avrà almeno un modulo che la gestisce.
Oppure come fosse un'azienda
Ogni azienda è divisa in reparti (moduli)
Ogni reparto fa qualcosa di specifico sui prodotti
Ogni reparto ha un responsabile (controller) degli operai (model) e produce un prodotto finito o semi-lavorato (view)
Quindi la tua azienda ha un reparto "utenti"
questo reparto gestisce tutte le operazioni relative agli utenti che la tua azienda è in grado di fare
Immagina che arriva da te un cliente che vuole vedere un utente;
arriva il cliente con il suo foglietto in mano e va in reception (front-controller)
la reception chiede al cliente cosa vuole
la reception dice al cliente di andare al reparto utenti (router)
Il cliente va verso il reparto
Il cliente consegna l'ID al responsabile (controller) del reparto utenti
Il responsabile verifica:
- che il foglio che l'utente ha consegnato sia scritto
- che sia un numero
- che sia un ID valido
fatto questo passa il foglietto all'operaio (mapper o model) e gli dice: "recuperami i dati di ID"
l'operaio passa i dati al responsabile
il responsabile ti consegna la risposta.
non è detto, puoi avere moduli che non hanno bisogno del db e quindi niente mapper e niente model..se ho capito bene ogni metodo del controller genera l applicazione di un modello e della vista
ad esempio una pagina index