Apache Cocoon e il Design Pattern MVC (2)

Voglio approfondire il Controller. Negli anni il pattern MVC si è evoluto o mutato, infatti oggi si parla di Model1 e Model2. In soldoni l’MVC1 prevede che il Controller si limiti a girare le richieste dalla View al Model. Ma la pratica, o meglio la crescente complessità del Model e dei processi che lo regolano, hanno portato il Controller ad assumere più responsabilità, in particolare ad occuparsi anche del controllo della business logic legata al Model.
In Cocoon è possibile applicare il Model1 utilizzando la sitemap. Come nella figura seguente:

MVC, Model 1

l’unico ruolo del Controller, impersonata dalla sitemap, è quello di gestire le richieste
del client e selezionare le pagine da mostrare.

Il Model2 è invece applicabile con l’utilizzo congiunto di sitemap e continuation:

MVC, Model 2

In questo caso il Controller prima si occupa di intercettare la richiesta tramite la sitemap, poi il controllo passa alla Continuation che dirige la business logic e l’invio del Model alla View.

L’argomento andrebbe approfondito meglio. Ma un concetto deve essere ben fermo: la continaution deve occuparsi solo di dirigire, ovvero deve fare solo da Controller, forte infatti è la tentazione utilizzarla per operazioni che intervengono sul Model. Rispettare il pattern MVC rende l’applicazione più razionale e mantenibile.

Apache Cocoon e il Design Pattern MVC (1)

L’architettura MVC è un design pattern che aiuta a risolvere i problemi
che nascono nel definire le relazioni e le comunicazioni tra i dati, l’applicazione
e la presentazione. Nell’ MVC il Model rappresenta i dati dell’applicazioni
e contiene le regole fondamentali di accesso e mantenimento degli stessi. Tipicamente
il Model, come suggerisce il nome, riflette o modella un processo
del mondo reale, per esempio l’organizzazione di un magazzino, la gestione dei documenti di un sito Web.

La View si occupa di organizzare la presentazione del modello, accede
ai dati e li presenta in modo opportuno. La view ha bisogno di mantenere
una rappresentazione consistente del modello, quindi, se c’è un cambiamento
in quest’ultimo, deve ricevere una notifica del cambio e provvedere ad una
vista aggiornata del modello. Nell’architettura MVC ci possono essere più viste dello stesso modello.

Infine c’è il Controller che cattura le richieste dell’utente, trasformandole
in opportune interazioni tra il modello e le viste.
La Figura seguente

Modello MVC

mostra i componenti dell’architettura MVC e come questi
interagiscono tra di loro. Il beneficio principale che l’architettura MVC offre
allo sviluppo di un’applicazione è quello di aiutare a separare l’organizzazione,
l’elaborazione, la presentazione delle informazioni.
Questa separazione è fondamentale per costruire applicazioni complesse in modo veloce e razionale.
Implementare un pattern MVC in Cocoon è molto semplice, anzi quasi
naturale
.