Catalyst (software)
# Catalyst (software)

Catalyst è un framework open source per lo sviluppo di applicazioni web. È scritto in Perl e segue piuttosto strettamente l'architettura MVC (Model-view-controller). Catalyst supporta una varietà di web pattern sperimentali, e si ispira ad altri framework quali Ruby On Rails, Maypole, e Spring.

Il principale canale di distribuzione di Catalyst è, come per la gran parte del software sviluppato in Perl, CPAN.

## Filosofia

Catalyst è basato sul principio DRY (don't repeat yourself, non ripeterti), il che indica che ogni definizione all'interno del proprio codice va specificata una volta sola.

Catalyst, ad esempio attraverso il loader di DBIx::Class, può generare automaticamente le classi del modello a partire dal database, non rendendo quindi necessaria la scrittura di alcun codice al livello di database. Esso tuttavia fornisce anche l'opzione di fare a mano, se ciò che si cerca è la massima flessibilità. Questo concetto vale non solo per il database ma per molti aspetti di Catalyst: un altro dei principi cardine di Catalyst è la flessibilità.

* La parte relativa al modello (Model) è gestita tramite DBIx::Class, Plucene, Net::LDAP e altre classi modello.
* Il livello vista (View) è solitamente gestito da Template Toolkit, Mason, oppure HTML::Template.
* Il livello Controller, naturalmente, è scritto dall'autore della particolare applicazione. Grandi porzioni della funzionalità del Controller possono essere di solito demandate a uno dei numerosi plugin di Catalyst (es. Catalyst::Plugin::HTML::Widget, Catalyst::Plugin::Prototype), etc.) oppure ereditati dai Controller di base (es. Catalyst::Controller::FormBuilder).
* Infine, Catalyst offre un set di facilitazioni che semplificano notevolmente il controllo di flusso e la mappatura delle URL ai metodi dei controller (le azioni). Un esempio notevole di ciò è costituito dalle chained actions.

Catalyst dispone di una ricca selezione di plugin. Ad esempio, c'è la generazione di codice JavaScript per AJAX e RIA (Rich Internet application) grazie al modulo Catalyst::Plugin::Prototype.

## Supporto da parte dei web server

Per le fasi di sviluppo e testing, Catalyst dispone di un semplice server HTTP incluso nella distribuzione. Per l'utilizzo in ambiente di produzione, si raccomanda Apache oppure lighttpd con supporto FastCGI oppure mod perl, ma ogni server web con supporto CGI (più lento) oppure FastCGI funziona. Su Apache, mod_perl può aumentare considerevolmente le prestazioni, anche se il suo uso può creare problemi poiché potrebbe non essere sicuro condividere la memoria di più applicazioni sotto mod_perl.

## Supporto database

Catalyst può interfacciarsi con qualunque database supportato dall'interfaccia DBI di Perl (cioè praticamente tutti, persino i file CSV); l'utilizzo di un buon RDBMS è tuttavia raccomandato. L'accesso al database è, dal punto di vista del programmatore, completamente astratto, e Catalyst (grazie alle classi modello) gestisce automaticamente l'accesso a tutti i database - in ogni caso, qualora necessario, è sempre possibile utilizzare query SQL direttamente. Ciò significa che si ottiene la neutralità dal database, la portabilità dell'applicazione su diversi sistemi di database, e la possibilità di utilizzare quanto più possibile database preesistenti per lo sviluppo di applicazioni Catalyst. Sono supportati molti RDBMS diversi, tra cui MySQL, PostgreSQL, SQLite, IBM DB2, Oracle and Microsoft SQL Server.

## Principali siti web costruiti con Catalyst

* BBC iPlayer - Nuova versione del popolare servizio della BBC (con punte di 130 milioni di programmi serviti al mese) per la distribuzione in streaming dei programmi radiotelevisivi prodotti dalla BBC medesima.
* Youporn - Il sito web pornografico più popolare al mondo, con diverse centinaia di milioni di pagine servite ogni giorno.
* Rambler - Uno dei tre principali portali in Russia.
* My Opera - Social network con oltre 5 milioni di iscritti.
* Magazines.com - Il più grande servizio online per la vendita di abbonamenti a riviste.
* Picturetrail - Servizio online di photo sharing e hosting.
* TAKKLE - Popolare social network dedicato allo sport nei college e nelle high school americane.
* Quibblo - Quiz e sondaggi online.
* iusethis - Sito su software basato su pattern di usabilità.
* MightyV - Premiato sito che lista i programmi TV per la BBC.
* Vox - Piattaforma di blogging sociale.
* EditGrid - Spreadsheet web-based.
* Evening News - Il sito web del più famoso giornale locale del Regno Unito (al di fuori di Londra).

## Progetti open source scritti con Catalyst

* Agave (blog)
* Angerwhale (blog)
* Devel::ebug (a perl debugger)
* Handel (software) (commerce framework)
* Meios
* MojoMojo (wiki)
* Sosa (software)
