Front controller

Il front controller è un modello di progettazione (pattern architetturale) per software. Il modello si applica alla progettazione di applicazioni web. "Fornisce un punto di ingresso centralizzato per la gestione delle richieste".[1]

Il modello Front Controller può essere implementato come un oggetto Java, o uno script in un linguaggio di scripting come PHP, ASP, CFML o JSP che è richiamato ad ogni richiesta in una sessione web. Lo script, per esempio una pagina index.php, gestisce tutte le operazioni comuni al framework, come la gestione delle sessioni, della cache, la validazione dell'input. In base alle richieste specifiche crea delle istanze di altri oggetti e chiama altri metodi per gestire specifiche operazioni.

L'alternativa al modello Front Controller è la creazione di script individuali, per esempio login.php e order.php che gestiscano le varie tipologie di richieste. In questa modalità ogni script dovrebbe duplicare il codice o gli oggetti comuni a tutte le operazioni ma, d'altra parte, ciascuno script potrebbe avere più flessibilità nell'implementazione della specifica funzione richiesta.

Esempi

Molti framework per applicazioni web implementano il modello Front Controller, tra cui:

  • Spring, un framework MVC Java
  • Cake, Code Igniter, Drupal, Symfony, Yii e Zend Framework, frameworks scritti in PHP

Note

  1. ^ Alur et al., p. 166.

Bibliografia

  • Deepak Alur, John Crup, Dan Malks, Core J2EE Patterns, Best Practices and Design Strategies, 2nd Ed., Sun Microsystems Press, 2003, pp. 650pp, ISBN 0-13-142246-4.
  • Martin Fowler, Patterns of Enterprise Application Architecture, pp. 560pp, ISBN 978-0-321-12742-6.
  • Martin Fowler, Front Controller, su martinfowler.com. URL consultato il 2 febbraio 2008.