Представлен второй стабильный релиз фреймворка Mojolicious, предназначенного для создания web-приложений на языке Perl с использованием парадигмы MVC (Model-View-Controller). Проект развивается автором популярного фреймворка Catalyst и позиционируется как попытка перевода на новый уровень средств web-разработки для языка Perl, учитывая прошлый опыт и адекватно поддерживая современные тенденции в web-разработке. С одной стороны Mojolicious достаточно прост в освоении (для незамысловатых проектов доступен упрощённый вариант Mojolicious::Lite), а с другой - построен на пике современных технологий, например, поддерживает WebSockets, Ajax, асинхронный ввод/вывод, RESTful-процедуры и т.п.

По заявлению основателя проекта, Mojolicious является попыткой возродить интерес к языку Perl среди разработчиков приложений, как было во времена появления модуля CGI. Пять лет назад в ответ на появление технологии Ajax был создан фреймворк Catalyst, в нынешнее время мир стоит на пороге революции технологий HTML5. Возможности браузеров возросли и ранее реализуемая на стороне сервера логика все больше переносится на клиентскую сторону. Появилось несколько принципиально новых подходов в работе web-приложений, таких как возможность организации полноценного двунаправленного обмена данными с сервером (WebSocket API), поддержка выполнения web-приложений в offline-режиме и более тесная интеграция JavaScript.

Изменения, отмеченные в версии Mojolicious 2.0:

  • Требования к минимальной версии Perl увеличены с 5.8.7 до 5.10.1. Использование некоторых конструкций, появившихся в новых версиях Perl, позволило заметно увеличить производительность;
  • Morbo - новый вариант встроенного в фреймворк web-сервера, идеально подходящего для использования в процессе разработки и отладки, так как он не требует перезапуска приложения после внесения изменений в код и может работать на любых платформах, включая Windows;
  • Встроенный web-сервер Mojo::Server::Hypnotoad, реализующий prefork-модель обработки запросов и предназначенный для развёртывания готовых проектов на Unix-системах, расширен в направлении упрощения настройки и адаптации под свои нужды. Из возможностей Hypnotoad также отмечается поддержка обновления Mojolicious, Perl и системных библиотек на лету, без остановки обслуживания запросов. Кроме того, Hypnotoad может распознавать заголовки X-Forwarded-For, X-Forwarded-Host и X-Forwarded-HTTPS при работе в роли бэкенда;
  • Использование высокопроизводительной библиотеки libev для обеспечения работы модулей обработки цикла событий (Event Loop) EV и AnyEvent;
  • Многие объекты теперь генерируют события, которые могут быть использованы для расширения возможностей Mojolicious;
  • Добавлен плагин Mount plugin для встраивания внешних Mojolicious-приложений в виде обработчиков заданных запросов;
  • Расширены возможности приложений, создаваемых по упрощённой схеме с использованием Mojolicious::Lite. Добавлена поддержка группировки секций (блок group), в зависимости от области их использования (например, можно отделить обработчики для закрытого интерфейса администратора и публично доступных сервисов);
  • Упрощённые средства тестирования приложений, использующих WebSocket.
  • Поддержка коллекций, упрощающих получение и разбор контента с внешних сайтов.

Особенности Mojolicious:

  • Поддержка из коробки: плагинов, шаблонов с возможностью вставки perl-операторов, подписанных cookies, I18N, полная поддержка unicode;
  • Встроенные механизмы управления сессиями;
  • Доступен отдельный фреймворк для тестирования web-приложений;
  • Чистый, легко портируемый и объектно-ориентированный API;
  • Пакет является самодостаточным и не требует для своей работы каких либо зависимостей, кроме Perl 5.10.1 (рекомендуется Perl 5.12+, кроме того некоторые опциональные функции могут потребовать установки дополнительных модулей из CPAN);
  • Встроенная реализация клиента и сервера для HTTP 1.1 и WebSocket, с поддержкой TLS, Bonjour, IDNA, Comet (длительный пулинг), chunking и multipart;
  • Несколько вариантов встроенного web-сервера: для тестирования, для промышленного использования для быстрого развёртывания. Сервер поддерживает организацию асинхронного ввода/вывода, epoll, kqueue и UNIX domain sockets. В простейшем случае для развёртывания web-проекта на базе Mojolicious достаточно наличия интерпретатора Perl. При этом фреймворк является многоплатформенным и поддерживает не только Unix-подобные ОС, но и Windows;
  • Автоматическое определение доступности режимов CGI, FastCGI и PSGI;
  • Встроенный парсер JSON и XML/HTML5 с поддержкой CSS3 селекторов.


Источник: http://www.opennet.ru/opennews/art.shtml?num=32069