Catalyst (software)
From Wikipedia, the free encyclopedia
Catalyst is an open source Web application framework written in Perl, that closely follows the Model-view-controller (MVC) architecture, and supports a number of experimental web patterns. It's heavily inspired by such frameworks as Ruby on Rails, Maypole, and Spring.
Catalyst is primarily distributed through the CPAN, which is the official distribution channel for Perl libraries and applications.
Contents |
[edit] Philosophy
Catalyst is based on a "Don't Repeat Yourself" (DRY) principle, which means that definitions should only have to be made once.
Catalyst can be used with automatic class loading from the database through one of the many loader modules, thus requiring no code for the database layer. But, if you require the flexibility of manually doing everything, it's also an option. Another guiding principle of Catalyst is flexibility.
Catalyst promotes the re-use of existing Perl modules that already handle common web application concerns well.
- The Model part is handled through DBIx::Class, Plucene, Net::LDAP and other model classes.
- The View layer is usually handled by Template Toolkit, Mason, or HTML::Template.
- The Controller layer, of course, is written by each application author. Large chunks of Controller functionality can usually be deferred to one of the many Catalyst plugins (e.g., Catalyst::Plugin::FormValidator, Catalyst::Plugin::Prototype, Catalyst::Plugin::Account::AutoDiscovery, etc.).
- Finally, Catalyst offers a set of helpers to simplify flow control and mapping URLs to controller methods.
Catalyst has a large selection of plugins. For example, it has javascript generation for Ajax and RIA using the Catalyst::Plugin::Prototype module (prototype is an Ajax framework).
[edit] Web server support
For development and testing, Catalyst has a built-in simple HTTP server. For production use, Apache or lighttpd with FastCGI or mod_perl support is recommended, but any web server with CGI or FastCGI support will work. On Apache, mod_perl can help with performance considerably, though its use might be an issue because it can be unsafe to share multiple applications under mod_perl.
[edit] Database support
Catalyst can run using any database supported by Perl's DBI (this means almost anything, even a CSV file), but a proper RDBMS is recommended. The database access is entirely abstracted from programmer's point of view and Catalyst, through one of its model classes, handles access to all databases automatically – though, if needed, using direct SQL queries is possible. This means you get database-neutrality, application portability over different database systems, and usability of pre-existing databases for Catalyst application development as much as possible, though due to different feature sets of the RDBMSes, it is not completely guaranteed by the framework alone. Several different RDBMS systems are supported, including MySQL, PostgreSQL, SQLite, IBM DB2, Oracle and Microsoft SQL Server.
A lot of Catalyst-based projects use DBIx::Class as the ORM layer, which provides further abstraction of SQL queries, using a resultset based API with transparent (and efficient) support for arbitrary joins and other features.
[edit] References
- Rockway, Jonathan. Catalyst. Packt Publishing. ISBN 978-1847190956. Retrieved on 2008-05-07.