Изменения

Перейти к: навигация, поиск

Платформы для запуска Perl веб-приложений

192 байта добавлено, 21:28, 21 ноября 2014
Нет описания правки
* На выходе массив из 3-х элементов: численный статус ответа, массив заголовков в виде [ Header => Value, Header => Value, … ] и текст ответа.
Однако без дополнительных обёрток такой интерфейс неудобен, поэтому есть вполне себе удобный {{CPAN|Plack}}, причём имеющий вполне вменяемый интерфейс — например, Plack::Request->parameters возвращает в виде хеша все GET и POST параметры, Plack::Request->cookies — хеш кукисов и т. п. Это — в отличие от модулей типа CGI и PCGI, в которых параметры и куки нужно читать по отдельности через param() и cookie().
Плюсы:
* Интерфейс — CGI. В режиме '''nph''' — «Non-Parsed Headers» — то есть на STDOUT нужно выводить просто HTTP-ответ. Это устраняет часть интерфейсных ограничений CGI, сохраняя совместимость с CGI скриптами.
* Можно использовать стандартные модули Net::Server::'''xx''' для выбора поведения сервера — например, можно использовать как TCP, как и UNIX сокеты, можно создать prefork ({{CPAN|Net::Server::PreFork}} или {{CPAN|Net::Server::PreForkSimple}}) или мультиплексирующий однопоточный сервер ({{CPAN|Net::Server::Multiplex}}).
* Существует некоторое количество модулей для расширения данного сервера — в частности, для запуска приложений на некоторых фреймворках через HTTP::Server::Simple, например, для {{CPAN|Mason}}. Собственно, есть и вариант для запуска PSGI/Plack приложений.
* Модуль достаточно широко используется при тестировании веб-приложений, в качестве легковесного тестового сервера: {{CPAN|Test::HTTP::Server::Simple}}.
Победитель — однозначно {{CPAN|Plack}}. Он наиболее современный, простой и продуманный.
CGI — всё ещё жив, но безнадёжно устарел. Старые приложения, на нём написанные, нужно превращать либо превращать в FastCGI, либо превращать в HTTP::Server::Simple (последнее достаточно удобно и сделано в https://github.com/vitalif/bugzilla-4intranet), либо, на крайний случай, просто запускать через {{CPAN|FCGI::Daemon}}.
mod_perl — тоже популярен, хотя ни универсальностью, ни надёжностью от него не пахнет. «Perl и mod_perl — это разные языки».

Навигация