Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

Catalyst - это инфраструктура веб-приложений с открытым исходным кодом, написанная на Perl , которая точно следует архитектуре модель – представление – контроллер (MVC) и поддерживает ряд экспериментальных веб-шаблонов. Он написан с использованием Moose , современной объектной системы для Perl. Его дизайн во многом вдохновлен такими фреймворками, как Ruby on Rails , Maypole и Spring .

Разработчик веб-приложения мог бы использовать Catalyst для работы с кодом, общим для всех веб-приложений: он предоставляет интерфейсы для веб-серверов и принимает запросы страниц, отправляя их в написанный разработчиком код для обработки и возврата запросов, а также предоставляет стандартизованный интерфейс для моделей данных. , аутентификация, управление сеансами и другие общие элементы веб-приложений.

Все эти элементы реализованы в виде подключаемых модулей к набору общих интерфейсов, что позволяет разработчику изменять конкретный используемый метод (например, сохранение сеанса в общей памяти по сравнению с таблицей базы данных или использование FastCGI вместо работы в Apache mod_perl) с помощью изменение конфигурации Catalyst для использования другого плагина без изменения кода приложения.

Catalyst в основном распространяется через CPAN , который является официальным каналом распространения библиотек и приложений Perl.

История [ править ]

Maypole был одним из первых фреймворков веб-приложений для языка программирования Perl, основанного на шаблоне MVC ; его основным автором был Саймон Козенс. [2] Catalyst начинался как форк Maypole, который должен был стать Maypole 3.0. [3] Разработка Maypole прекратилась, однако с его последним выпуском в апреле 2008 года [4] и Catalyst стал его современным поддерживаемым эквивалентом.

Первый выпуск Catalyst состоялся 28 января 2005 г. Первая официальная версия была размещена в CPAN 16 февраля 2005 г. [5] По состоянию на июнь 2011 г. у Catalyst был 201 зарегистрированный участник. [6]

Философия [ править ]

Catalyst основан на принципе « не повторяйся » (DRY), что означает, что определения следует давать только один раз. Catalyst можно использовать с автоматической загрузкой классов из базы данных через один из многих модулей загрузчика, таким образом не требуя кода для уровня базы данных. Но если вам нужна гибкость, позволяющая делать все вручную, это тоже вариант. Еще один руководящий принцип Catalyst - гибкость.

Catalyst продвигает повторное использование существующих модулей Perl, которые уже хорошо справляются с общими проблемами веб-приложений.

  • Часть Model обрабатывается через DBIx :: Class , Plucene , Net :: LDAP и другие классы модели.
  • View слой обычно обрабатывается Template Toolkit , Mason , или HTML :: Template , среди других.
  • Уровень контроллера, конечно же, написан каждым автором приложения. Большие фрагменты функциональности контроллера обычно можно передать одному из многих подключаемых модулей Catalyst (например, Catalyst :: Plugin :: FormValidator, Catalyst :: Plugin :: Prototype, Catalyst :: Plugin :: Account :: AutoDiscovery и т. Д.).
  • Наконец, Catalyst предлагает набор помощников для упрощения управления потоком и сопоставления URL-адресов с методами контроллера.

Catalyst имеет большой выбор плагинов. [7] Например, он генерирует JavaScript для Ajax и RIA с использованием модуля Catalyst :: Plugin :: 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 [8], который обеспечивает развертывание высокопроизводительных приложений Catalyst без отдельного веб-сервера. Начиная с выпуска Catalyst 5.9, Catalyst также выводит данные в соответствии со спецификацией PSGI, поэтому его можно запускать на любом сервере Plack и вместе с любым сервером или протоколом, поддерживающим спецификацию PSGI, включая Mongrel2 .

Поддержка базы данных [ править ]

Catalyst может работать с любой базой данных, поддерживаемой Perl DBI (это означает почти все, даже файл CSV ), но рекомендуется использовать подходящую СУБД или ODBMS . Доступ к базе данных полностью абстрагируются от точки зрения программиста и Catalyst, через один из классов моделей, ручки доступа ко всем базам данных автоматически - хотя, в случае необходимости, с помощью прямого SQLзапросы возможны. Это обеспечивает нейтральность к базам данных, переносимость приложений по разным системам баз данных и максимально возможное использование уже существующих баз данных для разработки приложений Catalyst, хотя из-за различных наборов функций СУБД это не полностью гарантируется одной только структурой. Поддерживаются несколько различных систем СУБД, включая MySQL , PostgreSQL , SQLite , IBM DB2 , Oracle и Microsoft SQL Server . Для ODBMS существует явная поддержка KiokuDB через Catalyst :: Model :: KiokuDB. [9] Модель абстракция позволяет базы данных любой природы , которые будут доступны через Catalyst :: Model :: адаптер.[10]

Многие проекты на основе Catalyst используют DBIx :: Class в качестве уровня ORM , который обеспечивает дальнейшую абстракцию SQL-запросов с использованием API на основе набора результатов с прозрачной поддержкой произвольных объединений и других функций.

Использует [ редактировать ]

Веб-сайты, поддерживаемые Catalyst, включают Magazines.com , [11] bbc.co.uk iPlayer backend, [12] платформу сообщества DuckDuckGo , http://flexibase.io и Tripwolf.com . Вики-движок MojoMojo написан с использованием Catalyst. [13]

До 2012 года YouPorn работал на Catalyst [14] . [15]

См. Также [ править ]

  • Сравнение веб-фреймворков

Ссылки [ править ]

  • Димент, Кирен. Полное руководство по Catalyst . Апресс. ISBN 978-1-4302-2365-8. Архивировано из оригинала на 2009-09-17 . Проверено 9 сентября 2009 .
  1. ^ "Выпуск модуля CPAN" . Катализатор . Проверено 25 мая 2018 .
  2. ^ Саймон Козенс (2004-04-22). «Быстрое развертывание веб-приложений с помощью Maypole» . Perl.
  3. ^ Полное руководство по Catalyst . Апресс . п. 2. ISBN 978-1430223658.
  4. ^ "Maypole" . CPAN .
  5. ^ "Файл изменений катализатора" . Проверено 8 августа 2018 .
  6. ^ «Catalyst Framework - участники» . Охлох . Проверено 6 июня 2011 .
  7. ^ "Найдите" Catalyst :: Plugin :: "- metacpan.org" . metacpan.org . Проверено 8 августа 2018 .
  8. ^ "Catalyst :: Engine :: HTTP :: Prefork - Высокопроизводительный механизм предварительного форка Catalyst - metacpan.org" . metacpan.org . Проверено 8 августа 2018 .
  9. ^ «Catalyst :: Model :: KiokuDB - используйте KiokuDB в своих приложениях Catalyst - metacpan.org» . metacpan.org . Проверено 8 августа 2018 .
  10. ^ "Catalyst :: Model :: Adapter - используйте простой класс в качестве модели Catalyst - metacpan.org" . metacpan.org . Проверено 8 августа 2018 .
  11. ^ " " Размещение вакансий в Catalyst / DBIC / eCommerce Developer " . 2011-05-08. Архивировано из оригинала на 2011-05-13 . Проверено 6 июня 2011 .
  12. ^ «IPlayer BBC работает на программном стеке Perl (включая Catalyst)» .
  13. ^ Димент, Кирен; Траут, Мэтт С (2009). "Поваренная книга катализаторов". Полное руководство по Catalyst . Апресс. С. 278–281. ISBN 978-1-4302-2365-8.
  14. ^ «Самый большой порно сайт на веб - YouPorn питание от Perl / Catalyst (топ 50 в Алексы)» . Reddit .
  15. ^ «Программный стек YouPorn изначально был написан на Perl + Mysql» .

Внешние ссылки [ править ]

  • Официальный веб-сайт
  • Вики Сообщества
  • Катализатор на CPAN