Краткая версия:
Какие критерии следует использовать для оценки возможных кандидатов на роль «сервера приложений» Perl (замена mod_perl)?
Мы ищем некий фреймворк, который позволит многократно выполнять различные программы Perl (как услугу) без затрат на:
повторный запуск интерпретатора perl один раз за каждое выполнение
загрузка / компиляция модулей Perl один раз за выполнение
(оба из которых являются преимуществами запуска mod_perl)
Примечания:
Мы НЕ слишком заботимся о каких-либо дополнительных преимуществах, предоставляемых mod_perl, таких как глубокая интеграция с Apache.
Это будет чистый сервер приложений, что означает, что нет необходимости в каких-либо специфических веб-функциях (это не проблема, если сервер приложений предоставляет их, просто не понадобится).
Мы, конечно же, рассмотрим очевидные критерии (чистая скорость, готовая к работе стабильность, активная разработка, возможность работать на ОС, которые нам небезразличны). Меня интересуют менее тривиальные и тонкие вещи, которые мы могли бы пожелать от такого фреймворка / сервера.
Справочная информация:
В $ work власти, которые решили, что они хотят заменить текущую ситуацию (простые веб-приложения, разрабатываемые на Embperl и развертываемые через Apache / mod_perl).
Было принято решение использовать (домашнюю) систему MVC, которая будет иметь интерфейс Java Spring для View; и Контроллер будет анализировать запросы серверных сервисов к сервисам для каждого приложения, которые выполняют обязанности Модели (не зацикливайтесь на деталях этого - это не очень актуально для основного вопроса).
Одним из вариантов внутренних сервисов является Perl, так что мы можем использовать весь наш существующий Perl IP (библиотеки, внутренний код webapp) в будущем и не портировать 100% его на Java.
Обобщить:
| View | Model/app | Model loaded/executed by: |
================================================================================
OLD | Empberl | Model.pm | mod_perl has Model.pm loaded, called from view.epl |
NEW | Java | Model.pm | perl generic_model.pl -model Model (does "require") |
================================================================================
Те из вас, кто какое-то время занимался веб-разработкой на Perl, сразу заметят самую вопиющую проблему с новым дизайном:
| Perl interpreter starts | Perl modules are loaded and compiled |
=======================================================================
OLD | Once per mod_perl thread | Once per mod_perl thread
NEW | Once per EVERY! request | Once per EVERY! request |
=======================================================================
Другими словами, в новой модели у нас больше нет преимуществ в производительности, предоставляемых mod_perl как постоянным контейнером приложений на стороне сервера !!!
Поэтому мы рассматриваем возможные контейнеры приложений, которые будут выполнять ту же функцию.
(в качестве примечания, да, мы думали о том, чтобы просто запустить экземпляр Apache с mod_perl в качестве такого контейнера приложения, как жизнеспособную возможность. Однако, поскольку веб-функциональность не требуется, я хотел бы посмотреть, могут ли какие-либо другие параметры соответствуют всем требованиям).
apache mod_perl
среде (или PSGI) и разговаривая со всеми ими из своей новой штуки Java Swing? Это слишком медленно? По крайней мере, тогда интерпретаторperl
работает, ждет и готов. - person G. Cito   schedule 07.06.2013mod_perl
подход к контейнеру приложений? Похоже, что www.apache.org запускается или запускаетсяQpsmtpd
, чтобы помочь таким образом обрабатывать доставку своих списков рассылки (т.е. встроен как SMTP-сервис в экземпляр apachemod_perl
). Итак,apache
иmod_perl
... они не только для Интернета :-) - person G. Cito   schedule 07.06.2013