Введение

Фреймворк веб-приложений с открытым исходным кодом, программное обеспечение графического драйвера.

Catalyst — это фреймворк веб-приложений с открытым исходным кодом, написанный на Perl. Он тесно следует архитектуре «модель — представление — контроллер» (MVC) и поддерживает ряд экспериментальных веб-шаблонов. Он написан с использованием Moose — современной объектной системы для Perl. Его дизайн во многом вдохновлен такими фреймворками, как Ruby on Rails, Maypole и Spring. Разработчики веб-приложений могут использовать Catalyst для работы с кодом, общим для всех веб-приложений. Он предоставляет интерфейс для приема запросов страниц, передачи этих запросов в код, написанный разработчиком, для обработки, и возврата результатов. Catalyst также предоставляет стандартизированный интерфейс для моделей данных, аутентификации, управления сеансами и других общих элементов веб-приложений. Все эти элементы реализованы в виде плагинов к набору общих интерфейсов, что позволяет разработчику изменить конкретный метод реализации (например, хранение сеансов в общей памяти или в таблице базы данных, использование FastCGI или работа в рамках Apache mod_perl) путем изменения конфигурации Catalyst для использования другого плагина, не изменяя код приложения. Catalyst распространяется главным образом через CPAN — официальный канал распространения библиотек и приложений Perl.

История

Maypole был одним из первых веб-фреймворков для языка программирования Perl, основанным на шаблоне MVC; его основным автором был Саймон Козенс. Catalyst возник как ответвление от Maypole, задуманное как Maypole 3.0. Однако разработка Maypole была прекращена, с последним релизом в апреле 2008 года, и Catalyst стал его современным, поддерживаемым аналогом. Первый релиз Catalyst состоялся 28 января 2005 года. Первая официальная версия была опубликована на CPAN 16 февраля 2005 года. По состоянию на июнь 2011 года Catalyst насчитывал 201 зарегистрированного участника.

Философия

Катализатор основан на принципе "не повторяй себя" (DRY), что означает, что определения должны быть сделаны только один раз. Catalyst может использоваться с автоматической загрузкой классов из базы данных через один из множества модулей загрузки, что избавляет от необходимости написания кода для уровня базы данных. Однако, если вам требуется гибкость ручного управления всеми аспектами, это также возможно. Гибкость – еще один основополагающий принцип Catalyst. Catalyst поощряет повторное использование существующих Perl-модулей, которые эффективно решают типичные задачи веб-приложений. Реализация модели осуществляется с помощью DBIx::Class, Plucene, Net::LDAP и других класов моделей. Слой представления обычно реализуется с помощью Template Toolkit, Mason или HTML::Template, среди прочих. Слой контроллера, естественно, разрабатывается каждым автором приложения. Значительная часть функциональности контроллера может быть делегирована одному из многочисленных плагинов Catalyst (например, Catalyst::Plugin::FormValidator, Catalyst::Plugin::Prototype, Catalyst::Plugin::Account::AutoDiscovery и т.д.). Наконец, Catalyst предоставляет набор вспомогательных функций для упрощения управления потоком выполнения и сопоставления URL-адресов с методами контроллера. Catalyst располагает большим выбором плагинов. Например, он поддерживает генерацию JavaScript для Ajax и RIAs с использованием модуля Catalyst::Plugin::Prototype (Prototype – это Ajax-фреймворк). Плагины охватывают широкий спектр областей, таких как аутентификация, управление сессиями, согласование HTTP и REST. Catalyst также может использоваться с другими Ajax-фреймворками, такими как jQuery или YUI, библиотекой пользовательского интерфейса Yahoo!.

Поддержка веб-серверов

Для разработки и тестирования Catalyst имеет встроенный простой HTTP-сервер. Для использования в рабочей среде рекомендуется Apache, lighttpd, Hiawatha, Cherokee или Nginx с поддержкой FastCGI или mod_perl, но любой веб-сервер с поддержкой CGI или FastCGI подойдет. На Apache, mod_perl может значительно повысить производительность, однако его использование может быть проблематичным, поскольку совместное использование нескольких приложений под mod_perl может быть небезопасным. Начиная с начала 2008 года, приложения Catalyst также можно развертывать с помощью движка HTTP::Prefork, что позволяет развертывать высокопроизводительные приложения Catalyst без отдельного веб-сервера. Начиная с выпуска Catalyst 5.9, Catalyst также поддерживает спецификацию PSGI, благодаря чему его можно запускать на любом Plack-сервере, а также с любым сервером или протоколом, поддерживающим спецификацию PSGI, включая Mongrel2.

Поддержка баз данных

Catalyst может работать с любой базой данных, поддерживаемой Perl's DBI (это означает практически любую, включая даже CSV-файл), но рекомендуется использовать полноценную RDBMS или ODBMS. Доступ к базе данных полностью абстрагирован от программиста, и Catalyst, через один из своих классов моделей, автоматически обрабатывает доступ ко всем базам данных – хотя, при необходимости, можно использовать прямые SQL-запросы. Это обеспечивает независимость от базы данных, переносимость приложений между различными СУБД и возможность использования существующих баз данных при разработке приложений Catalyst, насколько это возможно. Однако, из-за различного функционала RDBMS, это не гарантируется фреймворком полностью. Поддерживаются различные системы RDBMS, включая MySQL, PostgreSQL, SQLite, IBM Db2, Oracle и Microsoft SQL Server. Для ODBMS предусмотрена прямая поддержка KiokuDB через Catalyst::Model::KiokuDB. Абстракция модели позволяет получать доступ к базам данных любого типа через Catalyst::Model::Adaptor. Многие проекты на базе Catalyst используют DBIx::Class в качестве ORM-слоя, который обеспечивает дополнительную абстракцию SQL-запросов, предоставляя API на основе наборов результатов с прозрачной поддержкой произвольных соединений и других возможностей.

Применение

Веб-сайты, работающие на Catalyst, включают Magazines.com, бэкэнд BBC iPlayer, платформу сообщества DuckDuckGo, http://flexibase.io и Tripwolf.com. Wiki-движок MojoMojo написан с использованием Catalyst. YouPorn использовал Catalyst до 2012 года.