Aller au contenu

Catalyst (logiciel)

Un article de Wikipédia, l'encyclopédie libre.
Catalyst
Description de l'image Catalyst logo3.png.

Informations
Écrit en PerlVoir et modifier les données sur Wikidata
Système d'exploitation MultiplateformeVoir et modifier les données sur Wikidata
Type Framework webVoir et modifier les données sur Wikidata
Licence Artistic License et licence publique générale GNUVoir et modifier les données sur Wikidata
Site web catalyst.perl.orgVoir et modifier les données sur Wikidata

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

[modifier | modifier le code]

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

[modifier | modifier le code]

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

[modifier | modifier le code]

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

[modifier | modifier le code]

Références

[modifier | modifier le code]
  1. a et b John Wang, « Perl 5 - Powering Web 2.0 », sur www.dev411.com, (consulté le )

Liens externes

[modifier | modifier le code]