Релиз web-фреймворка Mojolicious 2.0, продолжающего развитие Catalyst
18 октября 2011 года
Представлен второй стабильный релиз фреймворка 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 селекторов.
Источники
править
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.
Комментарии
Если вы хотите сообщить о проблеме в статье (например, фактическая ошибка и т. д.), пожалуйста, используйте обычную страницу обсуждения.
Комментарии на этой странице могут не соответствовать политике нейтральной точки зрения, однако, пожалуйста, придерживайтесь темы и попытайтесь избежать брани, оскорбительных или подстрекательных комментариев. Попробуйте написать такие комментарии, которые заставят задуматься, будут проницательными или спорными. Цивилизованная дискуссия и вежливый спор делают страницу комментариев дружелюбным местом. Пожалуйста, подумайте об этом.
Несколько советов по оформлению реплик:
- Новые темы начинайте, пожалуйста, снизу.
- Используйте символ звёздочки «*» в начале строки для начала новой темы. Далее пишите свой текст.
- Для ответа в начале строки укажите на одну звёздочку больше, чем в предыдущей реплике.
- Пожалуйста, подписывайте все свои сообщения, используя четыре тильды (~~~~). При предварительном просмотре и сохранении они будут автоматически заменены на ваше имя и дату.
Обращаем ваше внимание, что комментарии не предназначены для размещения ссылок на внешние ресурсы не по теме статьи, которые могут быть удалены или скрыты любым участником. Тем не менее, на странице комментариев вы можете сообщить о статьях в СМИ, которые ссылаются на эту заметку, а также о её обсуждении на сторонних ресурсах.