Catalyst es un framework de código abierto para aplicaciones web escrito en Perl . Sigue de cerca la arquitectura modelo-vista-controlador (MVC) y admite varios patrones web experimentales. Está escrito en Moose , un moderno sistema de objetos para Perl. Su diseño está fuertemente inspirado en frameworks como Ruby on Rails , Maypole y Spring .
Catalyst permite a los desarrolladores de aplicaciones web gestionar el código común a todas las aplicaciones web. Proporciona una interfaz para recibir solicitudes de página, distribuirlas al código escrito por el desarrollador para su procesamiento y devolver las solicitudes. Catalyst también ofrece una interfaz estandarizada para modelos de datos, autenticación, gestión de sesiones y otros elementos comunes de las aplicaciones web.
Todos estos elementos se implementan como complementos para un conjunto de interfaces comunes, lo que permite al desarrollador cambiar el método específico utilizado (por ejemplo, almacenar una sesión en memoria compartida en lugar de como una tabla de base de datos, o usar FastCGI en lugar de operar dentro de mod_perl de Apache) cambiando la configuración de Catalyst para usar un complemento diferente sin alterar el código de la aplicación.
Catalyst se distribuye principalmente a través de CPAN , que es el canal de distribución oficial para las bibliotecas y aplicaciones de Perl.
Historia
Maypole fue uno de los primeros frameworks de aplicaciones web para el lenguaje de programación Perl que se basó en el patrón MVC ; su autor principal fue Simon Cozens. [ 2 ] Catalyst comenzó como una bifurcación de Maypole, con la intención de convertirse en Maypole 3.0. [ 3 ] Sin embargo, el desarrollo de Maypole se detuvo con su última versión en abril de 2008, [ 4 ] y Catalyst se convirtió en su equivalente moderno con soporte.
La primera versión de desarrollo de Catalyst tuvo lugar el 28 de enero de 2005. La primera versión oficial se publicó en CPAN el 16 de febrero de 2005. [ 5 ] En junio de 2011, Catalyst tenía 201 colaboradores registrados. [ 6 ]
Filosofía
Catalyst se basa en el principio de « no te repitas » (DRY, por sus siglas en inglés), lo que significa que las definiciones solo deben escribirse una vez. Catalyst se puede usar con la carga automática de clases desde la base de datos mediante uno de los muchos módulos de carga, lo que elimina la necesidad de código para la capa de base de datos. Sin embargo, si necesita la flexibilidad de hacerlo todo manualmente, también es una opción. Otro principio fundamental de Catalyst es la flexibilidad.
Catalyst fomenta la reutilización de módulos Perl existentes que ya manejan bien los problemas comunes de las aplicaciones web.
- La parte del modelo se gestiona a través de DBIx::Class , Plucene , Net::LDAP y otras clases de modelos.
- La capa de vista suele ser gestionada por Template Toolkit , Mason o HTML::Template , entre otros.
- La capa del controlador, por supuesto, la escribe cada autor de la aplicación. Gran parte de la funcionalidad del controlador se puede delegar a uno de los muchos complementos de Catalyst (por ejemplo, Catalyst::Plugin::FormValidator, Catalyst::Plugin::Prototype, Catalyst::Plugin::Account::AutoDiscovery, etc.).
- Por último, Catalyst ofrece un conjunto de herramientas auxiliares para simplificar el control de flujo y la asignación de URL a métodos de controlador.
Catalyst cuenta con una amplia selección de complementos. [ 7 ] Por ejemplo, ofrece generación de JavaScript para Ajax y RIA mediante el módulo Catalyst::Plugin::Prototype ( Prototype es un framework de Ajax ). Los complementos abarcan diversas áreas, como autenticación, gestión de sesiones, negociación HTTP y REST.
Catalyst también se puede utilizar con otros frameworks Ajax como jQuery o YUI , la biblioteca de interfaz de usuario de Yahoo!.
Soporte para servidores web
Para desarrollo y pruebas, Catalyst incluye un servidor HTTP simple integrado. Para producción, se recomienda Apache , lighttpd , Hiawatha , Cherokee o Nginx con soporte para FastCGI o mod_perl , aunque cualquier servidor web con soporte para CGI o FastCGI funcionará. En Apache, mod_perl puede mejorar considerablemente el rendimiento, si bien su uso podría ser problemático, ya que compartir varias aplicaciones bajo mod_perl puede ser inseguro.
Desde principios de 2008, las aplicaciones Catalyst también se pueden implementar utilizando el motor HTTP::Prefork [ 8 ] , que permite la implementación de aplicaciones Catalyst de alto rendimiento sin un servidor web independiente. A partir del lanzamiento de Catalyst 5.9, Catalyst también genera salida según la especificación PSGI , por lo que se puede ejecutar en cualquier servidor Plack y junto con cualquier servidor o protocolo que admita la especificación PSGI, incluido Mongrel2 .
Soporte de base de datos
Catalyst puede ejecutarse con cualquier base de datos compatible con DBI de Perl (prácticamente cualquier cosa, incluso un archivo CSV ), pero se recomienda un SGBD relacional u orientado a bases de datos (SGBD- ROB) adecuado. El acceso a la base de datos está completamente abstraído desde el punto de vista del programador y Catalyst, a través de una de sus clases de modelo, gestiona automáticamente el acceso a todas las bases de datos ; aunque, si es necesario, es posible usar consultas SQL directas . Esto permite la neutralidad de la base de datos, la portabilidad de la aplicación a través de diferentes sistemas de bases de datos y la utilización de bases de datos preexistentes para el desarrollo de aplicaciones Catalyst en la medida de lo posible, aunque debido a las diferentes características de los SGBD relacionales, el framework por sí solo no lo garantiza completamente. Se admiten varios sistemas SGBD relacionales, incluidos MySQL , PostgreSQL , SQLite , IBM Db2 , Oracle y Microsoft SQL Server . Para los SGBD orientados a bases de datos, existe soporte explícito para KiokuDB a través de Catalyst::Model::KiokuDB. [ 9 ] La abstracción del modelo permite acceder a bases de datos de cualquier naturaleza a través de Catalyst::Model::Adaptor. [ 10 ]
Muchos proyectos basados en Catalyst utilizan DBIx::Class como capa ORM , que proporciona una mayor abstracción de las consultas SQL, utilizando una API basada en conjuntos de resultados con soporte transparente para uniones arbitrarias y otras características.
Usos
Los sitios web que utilizan Catalyst incluyen Magazines.com , [ 11 ] el backend de iPlayer de bbc.co.uk , [ 12 ] la plataforma comunitaria de DuckDuckGo , http://flexibase.io (archivado el 1 de septiembre de 2016 en Wayback Machine) y Tripwolf.com . El motor wiki de MojoMojo está escrito con Catalyst. [ 13 ]
Véase también
Referencias
- Diment, Kieren (8 de julio de 2009). La guía definitiva de Catalyst . Apress. ISBN 978-1-4302-2365-8Archivado del original el 17 de septiembre de 2009. Consultado el 9 de septiembre de 2009 .
- ↑ "Lanzamiento del módulo CPAN" . Catalyst . Consultado el 15 de agosto de 2024 .
- ↑ Simon Cozens (22 de abril de 2004). "Despliegue rápido de aplicaciones web con Maypole" . Perl.
- ↑ La guía definitiva de Catalyst . Apress . Septiembre de 2009. pág. 2. ISBN 978-1430223658.
- ↑ "Maypole" . CPAN .
- ↑ "Archivo de cambios de Catalyst" . Consultado el 8 de agosto de 2018 .
- ↑ "Catalyst Framework - Colaboradores" . Ohloh . Archivado del original el 6 de julio de 2012. Consultado el 6 de junio de 2011 .
- ↑ "Buscar "Catalyst::Plugin::" - metacpan.org" . metacpan.org . Consultado el 8 de agosto de 2018 .
- ↑ "Catalyst::Engine::HTTP::Prefork - Motor Catalyst de pre-bifurcación de alto rendimiento - metacpan.org" . metacpan.org . Consultado el 8 de agosto de 2018 .
- ↑ "Catalyst::Model::KiokuDB - use KiokuDB in your Catalyst apps - metacpan.org" . metacpan.org . Consultado el 8 de agosto de 2018 .
- ↑ "Catalyst::Model::Adaptor - use a plain class as a Catalyst model - metacpan.org" . metacpan.org . Consultado el 8 de agosto de 2018 .
- ↑ "Anuncio de empleo para desarrollador Catalyst/DBIC/eCommerce . 8 de mayo de 2011. Archivado del original el 13 de mayo de 2011. Consultado el 6 de junio de 2011 .
- ↑ "El iPlayer de la BBC funciona con una pila de software Perl (incluido Catalyst)" .
- ↑ Diment, Kieren; Trout, Matt S (2009). «Catalyst Cookbook». La guía definitiva de Catalyst . Apress. págs. 278–281 . ISBN 978-1-4302-2365-8.
- ↑ "El sitio porno más grande de la web, YouPorn, impulsado por Perl/Catalyst (entre los 50 primeros en Alexa)" . reddit .
- ↑ "El conjunto de software de YouPorn fue escrito originalmente en Perl + MySQL" . 2 de abril de 2012.
Enlaces externos
- Archivo del sitio web oficial
- Wiki de Catalyst
- Catalyst en CPAN
- Software libre programado en Perl
- Software que utiliza la Licencia Pública General de GNU.
- marcos de trabajo web