Catalyst (programvare)

Catalyst er et webapplikasjonsrammeverk skrevet i Perl som følger model-view-controller-arkitekturen, og støtter en rekke konsepter for webutvikling. Catalyst er sterkt inspirert av rammeverk som Ruby on Rails, Maypole, og Spring.
Catalyst er hovedsakelig distribuert gjennom CPAN, som er den offisielle distribusjonskanalen for Perl-moduler, og er basert på åpen kildekode.


== Filosofi ==
Catalyst er basert på «Don't Repeat Yourself» (DRY)-prinsippet, som betyr at du skal bare trenge å definere ting ett sted.
Catalyst kan brukes med automatisk kodegenerering fra databasen gjennom en av mange «loader»-moduler, og trenger på den måte ingen kode for databaselaget. Hvis du krever fleksibiliteten til å gjøre alt manuelt, støtter Catalyst også dette. Fleksibilitet er et annet styrende prinsipp for Catalyst.
Catalyst oppfordrer til gjenbruk av eksisterende Perl-moduler som allerede håndterer vanlige situasjoner for web-utvikling godt.

Modell-delen håndteres via DBIx::Class, Plucene, Net::LDAP og andre modellklasser.
Visning-laget håndteres vanligvis av Template Toolkit, Mason, eller HTML::Template.
Flyt (Controller) laget skrives selvsagt av applikasjonsutvikleren.  Mye av denne funksjonaliteten kan enkelt implementeres gjennom bruk av en av Catalysts «Plugins» (f.eks. Catalyst::Plugin::FormValidator, Catalyst::Plugin::Prototype eller Catalyst::Plugin::Account::AutoDiscovery).
Catalyst tilbyr også et sett med script for å genere kode-maler enkelt.Catalyst har et stort utvalg plugins. For eksempel Ajax og RIA støttes gjennom Catalyst::Plugin::Prototype-modulen (Prototype er et javascriptbibliotek).


== Støtte for Web-tjenere ==
Catalyst tilbyr en enkel web-tjener innebygd, som kan brukes til testing og utvikling. Til produksjonsbruk anbefales Apache eller lighttpd med FastCGI eller mod perl støtte, men Catalyst virker med alle servere som støtter CGI eller FastCGI. mod_perl kan hjelpe betraktelig på ytelsen under apache, men kan føre til problemer med å kjøre flere applikasjoner i samme web-tjener.


== Database-støtte ==
Catalyst kan bruke alle databaser som støttes av Perls DBI (Det betyr det meste, selv en CSV-fil), men det anbefales å bruke en RDBMS som lagring for databaser. Tilgangen til databasen er nesten helt abstrahert fra et utviklersynspunkt, og Catalyst håndterer database-tilgangen transparent gjennom bruk av sine modell-klasser. Om du trenger det kan du likevel utføre direkte SQL spørringer. Dette betyr at du kan utvikle database-nøytrale løsninger, som lett kan flyttes til en annen database, og gjør det lett å bruke en eksisterende database med Catalyst, selv om dette til en viss grad kommer an på støttede funksjoner i databasen. Flere databaser er fullt støttet, bla. MySQL, PostgreSQL, SQLite, IBM DB2, Oracle og Microsoft SQL Server.


== Nettsteder som bruker Catalyst ==
ABC Startsiden
iusethis en software site.
MightyV – Vinner av en konkurranse fra BBC.
Vox (blogging plattform)
EditGrid – Regneark på web.
My Opera – Opera Softwares nettsamfunn.
Dev Opera – Opera Softwares utviklernettsted.


== Åpen kildekode bygget med Catalyst ==
Agave (software) (blog)
Angerwhale (blog)
Devel::ebug (en perl debugger) på CPAN
Handel (programvare) (ehandels-rammeverk)
Meios
MojoMojo (wiki)
Sosa (software)


== Eksterne lenker ==
Offisielt nettsted 
Programmer bygget med Perl5 og Catalyst
Catalyst artikkel på PerlNet
Catalyst på CPAN
Planet Catalyst