Catalyst es un marco de trabajo de aplicación web de código abierto escrito en Perl , que sigue de cerca la arquitectura modelo-vista-controlador (MVC) y es compatible con una serie de patrones web experimentales. Está escrito usando Moose , un moderno sistema de objetos para Perl. Su diseño está fuertemente inspirado en marcos como Ruby on Rails , Maypole y Spring .
Autor (es) original (es) | Sebastián Riedel |
---|---|
Lanzamiento estable | 5.90124 / 18 de enero de 2019 [1] |
Escrito en | Perl |
Tipo | Marco de aplicación web |
Licencia | PAL y GPL |
Sitio web | www |
Un desarrollador de aplicaciones web usaría Catalyst para manejar el código común a todas las aplicaciones web: proporciona interfaces a los servidores web y recibe solicitudes de página, las envía al código escrito por el desarrollador para procesar y devolver las solicitudes, y proporciona una interfaz estandarizada para modelos de datos. , autenticación, gestión de sesiones y otros elementos comunes de 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, un almacenamiento de sesión en memoria compartida en lugar de una tabla de base de datos, o usar FastCGI en lugar de operar como un mod_perl de Apache) mediante cambiar 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 de las bibliotecas y aplicaciones de Perl.
Historia
Maypole fue uno de los primeros marcos 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 cesó en mayo, con su lanzamiento más reciente en abril de 2008, [4] y Catalyst se convirtió en su equivalente con soporte moderno.
La primera versión de desarrollo de Catalyst tuvo lugar el 28 de enero de 2005. La primera versión oficial se colocó 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 repetir " (DRY), lo que significa que las definiciones solo deben hacerse una vez. Catalyst se puede usar con carga automática de clases desde la base de datos a través de uno de los muchos módulos de carga, por lo que no requiere código para la capa de la base de datos. Pero, si necesita la flexibilidad de hacer todo manualmente, también es una opción. Otro principio rector de Catalyst es la flexibilidad.
Catalyst promueve la reutilización de los módulos de Perl existentes que ya manejan bien los problemas comunes de las aplicaciones web.
- La parte del modelo se maneja a través de DBIx :: Class , Plucene , Net :: LDAP y otras clases de modelo.
- La capa de Vista generalmente es manejada por Template Toolkit , Mason o HTML :: Template , entre otros.
- La capa de controlador , por supuesto, la escribe cada autor de la aplicación. Por lo general, grandes partes de la funcionalidad del controlador se pueden diferir a uno de los muchos complementos de Catalyst (por ejemplo, Catalyst :: Plugin :: FormValidator, Catalyst :: Plugin :: Prototype, Catalyst :: Plugin :: Account :: AutoDiscovery, etc.).
- Finalmente, Catalyst ofrece un conjunto de ayudantes para simplificar el control de flujo y la asignación de URL a los métodos del controlador.
Catalyst tiene una gran selección de complementos. [7] Por ejemplo, tiene generación de JavaScript para Ajax y RIA utilizando el módulo Catalyst :: Plugin :: Prototype (el prototipo es un marco Ajax ). Los complementos cubren muchas áreas, por ejemplo, autenticación, administración de sesiones, negociación HTTP y REST.
Catalyst también se puede utilizar con otros frameworks Ajax como jQuery o YUI , Yahoo! Biblioteca de interfaz de usuario.
Soporte de servidor web
Para el desarrollo y las pruebas, Catalyst tiene un servidor HTTP simple integrado. Para uso en producción, se recomienda Apache , lighttpd , Hiawatha , Cherokee o Nginx con soporte FastCGI o mod_perl , pero cualquier servidor web con soporte CGI o FastCGI funcionará. En Apache, mod_perl puede ayudar considerablemente con el rendimiento, aunque su uso puede ser un problema porque puede ser peligroso compartir varias aplicaciones bajo mod_perl.
Desde principios de 2008, las aplicaciones Catalyst también se pueden implementar utilizando el motor HTTP :: Prefork [8] que proporciona la implementación de aplicaciones Catalyst de alto rendimiento sin un servidor web separado. A partir del lanzamiento de Catalyst 5.9, Catalyst también genera 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 utilizando cualquier base de datos compatible con DBI de Perl (esto significa casi cualquier cosa, incluso un archivo CSV ), pero se recomienda un RDBMS u ODBMS adecuados . El acceso a la base de datos se abstrae completamente desde el punto de vista del programador y Catalyst, a través de una de sus clases modelo, maneja el acceso a todas las bases de datos automáticamente, aunque, si es necesario, es posible utilizar consultas SQL directas . Esto permite la neutralidad de la base de datos, la portabilidad de la aplicación en diferentes sistemas de base de datos y la usabilidad de las bases de datos preexistentes para el desarrollo de aplicaciones Catalyst tanto como sea posible, aunque debido a los diferentes conjuntos de características de los RDBMS, no está completamente garantizado por el marco solo. Se admiten varios sistemas RDBMS diferentes, incluidos MySQL , PostgreSQL , SQLite , IBM DB2 , Oracle y Microsoft SQL Server . Para ODBMS, hay 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 :: Adapter. [10]
Muchos proyectos basados en Catalyst utilizan DBIx :: Class como la capa ORM , que proporciona una mayor abstracción de las consultas SQL, utilizando una API basada en el conjunto de resultados con soporte transparente para uniones arbitrarias y otras características.
Usos
Los sitios web impulsados por Catalyst incluyen Magazines.com , [11] bbc.co.uk iPlayer backend, [12] DuckDuckGo's Community Platform, http://flexibase.io y Tripwolf.com . El motor wiki de MojoMojo está escrito con Catalyst. [13]
YouPorn fue impulsado por Catalyst [14] hasta 2012. [15]
Ver también
- Comparación de frameworks web
Referencias
- Diment, Kieren. La guía definitiva de Catalyst . Presione. ISBN 978-1-4302-2365-8. Archivado desde el original el 17 de septiembre de 2009 . Consultado el 9 de septiembre de 2009 .
- ^ "Lanzamiento del módulo CPAN" . Catalizador . Consultado el 25 de mayo de 2018 .
- ^ Simon Cozens (22 de abril de 2004). "Implementación rápida de aplicaciones web con Maypole" . Perl.
- ^ La guía definitiva de Catalyst . Presione . pag. 2. ISBN 978-1430223658.
- ^ "Árbol de mayo" . CPAN .
- ^ "Archivo de cambios de Catalyst" . Consultado el 8 de agosto de 2018 .
- ^ "Marco de catalizador - contribuyentes" . Ohloh . Consultado el 6 de junio de 2011 .
- ^ "Busque" 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 en sus aplicaciones Catalyst - metacpan.org" . metacpan.org . Consultado el 8 de agosto de 2018 .
- ^ "Catalyst :: Model :: Adapter - use una clase simple como modelo Catalyst - metacpan.org" . metacpan.org . Consultado el 8 de agosto de 2018 .
- ^ " Publicación de empleo " " Catalyst / DBIC / eCommerce Developer" . 2011-05-08. Archivado desde el original el 13 de mayo de 2011 . Consultado el 6 de junio de 2011 .
- ^ "IPlayer de BBC funciona con una pila de software Perl (incluido Catalyst)" .
- ^ Diment, Kieren; Trucha, Matt S (2009). "Libro de cocina del catalizador". La guía definitiva de Catalyst . Presione. págs. 278-281. ISBN 978-1-4302-2365-8.
- ^ "El sitio porno más grande en la web YouPorn impulsado por Perl / Catalyst (top 50 en alexa)" . reddit .
- ^ "La pila de software de YouPorn se escribió originalmente en Perl + Mysql" .
enlaces externos
- Página web oficial
- Wiki Catalyst
- Catalizador en CPAN