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.