# Catalyst (logiciel)

Catalyst est un framework open source écrit en Perl, qui applique strictement le modèle de conception Modèle-Vue-Contrôleur (MVC), et qui supporte certains modèles expérimentaux de conception pour le web. Il est fortement inspiré de cadriciels comme Ruby On Rails, Maypole, et Spring.
Catalyst est surtout distribué à travers le CPAN, qui est le canal de distribution des bibliothèques et applications Perl.

## Philosophie

Catalyst est fondé sur le principe "Don't Repeat Yourself" (DRY, « ne vous répétez pas »).
Vous pouvez utiliser Catalyst avec le chargement automatique de classes grâce à un des multiples modules de chargement, ne requérant ainsi pas de code pour la couche base de données. Mais, si vous avez besoin de la flexibilité de tout faire à la main, c'est aussi possible : la flexibilité est un autre principe guide de Catalyst.
Catalyst promet la réutilisation de modules Perl préexistants qui gèrent déjà bien les applications Web.
* La couche Modèle est gérée par DBIx::Class, Plucene, Net::LDAP et d'autres classes modèles.
* La couche Vue est généralement gérée par un patron web tel que Template Toolkit, Mason, ou HTML::Template.
* La couche Contrôleur est gérée par chaque auteur d'application. De larges pans des fonctionnalités du contrôleur sont délégués à des plugins Catalyst tels que Catalyst::Plugin::FormValidator, Catalyst::Plugin::Prototype, Catalyst::Plugin::Account::AutoDiscovery...
* Finalement, Catalyst offre des ensembles de helpers pour simplifier les structures de contrôle et connecter des URL à des méthodes de contrôle.
Les applications Catalyst peuvent exploiter les modules Perl fournis sur CPAN.
Par exemple, la génération de code Ajax et de RIA avec le module Catalyst::Plugin::Prototype (cadriciel Javascript).

## Support de serveur web

Pour le développement et les tests, Catalyst comporte un serveur HTTP intégré. Pour la production, Apache, lighttpd et nginx avec le support de FastCGI ou mod perl sont recommandés, mais tout serveur web avec support de CGI ou FastCGI fonctionnera. Sur Apache, mod_perl peut améliorer considérablement les performances, mais son utilisation peut être un problème car il n'est pas sûr de partager de multiples applications sur un même serveur mod_perl.

## Support des bases de données

Catalyst peut tourner sur toute base de données supportée par le DBI de Perl. Cela signifie à peu près tout, même un fichier CSV, mais une véritable base de données relationnelle est recommandée.
L'accès à la base de données est totalement découplé du point de vue du programmeur. Catalyst, grâce à une de ses classes modèles, gère l'accès à toutes les bases de données automatiquement, même si des requêtes SQL explicites sont possibles.
Ne pas faire de requêtes SQL explicites signifie que vous êtes neutre vis-à-vis des bases de données et obtenez la portabilité de l'application entre différentes bases de données, et la possibilité d'utiliser autant que possible les bases de données préexistantes pour Catalyst, mais en raison d'ensembles de fonctionnalités différentes des bases de données relationnelles, ce n'est pas garanti par le cadriciel Catalyst lui-même.
Catalyst supporte différentes bases de données relationnelles dont MySQL, PostgreSQL, SQLite, DB2, Oracle et Microsoft SQL Server.

## Sites web construits avec Catalyst

* (en) del.icio.us - site web social de marque-pages
* (en) EditGrid - tableur à base de web