Catalyst (программное обеспечение) - Catalyst (software)
Эта статья поднимает множество проблем. Пожалуйста помоги Улучши это или обсудите эти вопросы на страница обсуждения. (Узнайте, как и когда удалить эти сообщения-шаблоны) (Узнайте, как и когда удалить этот шаблон сообщения)
|
Оригинальный автор (ы) | Себастьян Ридель |
---|---|
Стабильный выпуск | 5.90124 / 18 января 2019 г.[1] |
Написано в | Perl |
Тип | Фреймворк веб-приложений |
Лицензия | PAL и GPL |
Интернет сайт | www |
Катализатор является Открытый исходный код каркас веб-приложений написано в Perl, который внимательно следует модель – представление – контроллер (MVC) и поддерживает ряд экспериментальных веб-шаблонов. Он написан с использованием лось, современная объектная система для Perl. Его дизайн во многом вдохновлен такими фреймворками, как Рубин на рельсах, Maypole, и весна.
Разработчик веб-приложений мог бы использовать Catalyst для работы с кодом, общим для всех веб-приложений: он предоставляет интерфейсы для веб-серверов и принимает запросы страниц, отправляя их в написанный разработчиком код для обработки и возврата запросов, а также предоставляет стандартизованный интерфейс для моделей данных. , аутентификация, управление сеансами и другие общие элементы веб-приложений.
Все эти элементы реализованы в виде подключаемых модулей к набору общих интерфейсов, что позволяет разработчику изменять конкретный используемый метод (например, сохранение сеанса в общей памяти по сравнению с таблицей базы данных или использование FastCGI вместо работы в Apache mod_perl) с помощью изменение конфигурации Catalyst для использования другого плагина без изменения кода приложения.
Катализатор в основном распространяется через CPAN, который является официальным каналом распространения библиотек и приложений Perl.
История
Maypole был одним из первых фреймворков веб-приложений для языка программирования Perl, основанного на MVC шаблон; его основным автором был Саймон Козенс.[2] Катализатор начинался как вилка Maypole, призванный стать Maypole 3.0.[3] Однако разработка Maypole прекратилась с его последним выпуском в апреле 2008 года.[4] и Catalyst стал его современным поддерживаемым эквивалентом.
Первый выпуск Catalyst состоялся 28 января 2005 г. Первая официальная версия была размещена в CPAN 16 февраля 2005 г.[5] По состоянию на июнь 2011 года у Catalyst был 201 зарегистрированный участник.[6]
Философия
Катализатор основан на "не повторяйся "(DRY) принцип, который означает, что определения должны быть сделаны только один раз. Catalyst можно использовать с автоматической загрузкой классов из базы данных через один из многих модулей загрузчика, таким образом, не требуя кода для уровня базы данных. Но если вы Требуется гибкость, выполняя все вручную, это тоже вариант.Другой руководящий принцип Catalyst - гибкость.
Catalyst способствует повторному использованию существующих модулей Perl, которые уже хорошо справляются с общими проблемами веб-приложений.
- В Модель часть обрабатывается через DBIx :: Класс, Plucene, Сеть :: LDAP и другие классы моделей.
- В Посмотреть слой обычно обрабатывается Набор инструментов для шаблонов, Мейсон, или же HTML :: Шаблон, среди прочего.
- В Контроллер Layer, конечно же, написан каждым автором приложения. Большие фрагменты функциональности контроллера обычно можно передать одному из множества подключаемых модулей Catalyst (например, Catalyst :: Plugin :: FormValidator, Catalyst :: Plugin :: Prototype, Catalyst :: Plugin :: Account :: AutoDiscovery и т. Д.).
- Наконец, Catalyst предлагает набор помощников для упрощения управления потоком и сопоставления URL-адресов с методами контроллера.
Catalyst имеет большой выбор плагинов.[7] Например, есть генерация JavaScript для Аякс и RIA используя модуль Catalyst :: Plugin :: Prototype (прототип является Фреймворк Ajax ). Плагины охватывают множество областей, например аутентификацию, управление сеансами, согласование HTTP и REST.
Catalyst также можно использовать с другими фреймворками Ajax, такими как jQuery или Юй, то Yahoo! Библиотека пользовательского интерфейса.
Поддержка веб-сервера
Для разработки и тестирования Catalyst имеет встроенный простой HTTP-сервер. Для производственного использования, Apache, lighttpd, Гайавата, Чероки или Nginx с FastCGI или mod_perl рекомендуется поддержка, но любой веб-сервер с поддержкой CGI или FastCGI будет работать. В Apache mod_perl может значительно повысить производительность, хотя его использование может быть проблемой, поскольку совместное использование нескольких приложений под mod_perl может быть небезопасным.
С начала 2008 года приложения Catalyst также можно развертывать с помощью механизма HTTP :: Prefork.[8] который обеспечивает развертывание высокопроизводительных приложений Catalyst без отдельного веб-сервера. Начиная с выпуска Catalyst 5.9, Catalyst также выводит на ПСГИ spec, поэтому его можно запускать на любом Plack server и вместе с любым сервером или протоколом, который поддерживает спецификацию PSGI, включая Дворняга2.
Поддержка базы данных
Catalyst может работать с любой базой данных, поддерживаемой DBI Perl (это означает почти все, даже CSV файл), но правильный СУБД или ODBMS Рекомендовано. В доступ к базе данных полностью абстрагирован с точки зрения программиста, а Catalyst через один из своих классов модели автоматически обрабатывает доступ ко всем базам данных, хотя, если необходимо, используя прямой SQL запросы возможны. Это обеспечивает нейтральность к базам данных, переносимость приложений по разным системам баз данных и максимально возможное удобство использования уже существующих баз данных для разработки приложений Catalyst, хотя из-за различных наборов функций СУБД это не полностью гарантируется одной только структурой. Поддерживаются несколько различных систем РСУБД, в том числе MySQL, PostgreSQL, SQLite, IBM DB2, Oracle и Microsoft SQL Server. Для ODBMS существует явная поддержка KiokuDB через Catalyst :: Model :: KiokuDB.[9] В Модель абстракция позволяет получать доступ к базам данных любой природы через Catalyst :: Model :: Adapter.[10]
Многие проекты на основе Catalyst используют DBIx :: Класс как Слой ORM, который обеспечивает дальнейшую абстракцию SQL-запросов с использованием API на основе набора результатов с прозрачной поддержкой произвольных объединений и других функций.
Использует
Веб-сайты, работающие на Catalyst, включают Magazines.com,[11] bbc.co.uk iPlayer бэкэнд[12] DuckDuckGo's Платформа сообщества, http://flexibase.io и Tripwolf.com. MojoMojo вики движок написан с использованием Catalyst.[13]
YouPorn работал на Catalyst[14] до 2012 года.[15]
Смотрите также
Рекомендации
- Димент, Кирен. Полное руководство по Catalyst. Апресс. ISBN 978-1-4302-2365-8. Архивировано из оригинал на 2009-09-17. Получено 2009-09-09.
- ^ "Выпуск модуля CPAN". Катализатор. Получено 25 мая 2018.
- ^ Саймон Козенс (2004-04-22). «Быстрое развертывание веб-приложений с помощью Maypole». Perl.
- ^ Полное руководство по Catalyst. Apress. п. 2. ISBN 978-1430223658.
- ^ "Майское дерево". CPAN.
- ^ "Файл изменений катализатора". Получено 8 августа 2018.
- ^ «Catalyst Framework - участники». Охлох. Получено 2011-06-06.
- ^ "Искать" Catalyst :: Plugin :: "- metacpan.org". metacpan.org. Получено 8 августа 2018.
- ^ "Catalyst :: Engine :: HTTP :: Prefork - Высокопроизводительный механизм предварительного форка Catalyst - metacpan.org". metacpan.org. Получено 8 августа 2018.
- ^ "Catalyst :: Model :: KiokuDB - используйте KiokuDB в своих приложениях Catalyst - metacpan.org". metacpan.org. Получено 8 августа 2018.
- ^ «Catalyst :: Model :: Adapter - используйте простой класс в качестве модели Catalyst - metacpan.org». metacpan.org. Получено 8 августа 2018.
- ^ ""Catalyst / DBIC / разработчик электронной коммерции "размещение". 2011-05-08. Архивировано из оригинал на 2011-05-13. Получено 2011-06-06.
- ^ «IPlayer BBC работает на программном стеке Perl (включая Catalyst)».
- ^ Димент, Кирен; Траут, Мэтт С (2009). "Поваренная книга катализаторов". Полное руководство по Catalyst. Апресс. С. 278–281. ISBN 978-1-4302-2365-8.
- ^ «Самый большой порно сайт в Интернете YouPorn работает на Perl / Catalyst (топ-50 в Алексы)». Reddit.
- ^ «Программный стек YouPorn изначально был написан на Perl + Mysql».