Короткая версия:Какие критерии следует использовать для оценки Perl-сервера приложений (замена mod_perl)?
Какие критерии следует использовать для оценки возможных кандидатов на «сервера приложений» Perl (замена mod_perl)?
Мы ищем какую-то структуру, которая позволит выполнения различных Perl программ повторно (как услуга) без затрат:
повторно launcing PERL интерпретатор один раз в каждом исполнении
загрузки/компиляции Perl модулей один раз в исполнении
(оба из которых являются преимущества, которые работает mod_ Perl предоставляет)
Примечания:
Мы не очень заботиться о каких-либо дополнительных преимуществ, предоставляемых по mod_perl слишком много, таких как глубокая интеграция Apache.
Это будет чистый сервер приложений, то есть нет необходимости в каких-либо конкретных веб-функциях (это не проблема, если сервер приложений предоставляет его, просто не понадобится).
Мы, конечно, рассмотрим очевидные критерии (необработанная скорость, готовность к производству, активная разработка, возможность запуска на OS, о котором мы заботимся). Меня интересуют менее тривиальные и тонкие вещи, которые мы можем пожелать от такой платформы/сервера.
фона:
В $ работа, власть имущие решили, что они хотят, чтобы заменить текущую ситуацию (простые WebApps разрабатываются в Embperl и развертываются с помощью Apache/mod_perl).
Было принято решение использовать (доморощенную) систему MVC, которая будет иметь передний конец Java Spring для представления; и Контроллер будет обрабатывать внутренние запросы на услуги для каждого приложения, которые выполняют обязанности по модели (не зацикливайтесь на деталях этого - это не очень важно для основного вопроса).
Одним из вариантов для внутренних служб является Perl, так что мы можем использовать все существующие существующие Perl IP (библиотеки, веб-серверный код) в будущем и не должны переносить 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 как таковой в контейнере приложения как жизнеспособную возможность. Однако, поскольку веб-функциональность не требуется, я бы хотел увидеть, любые другие варианты могут соответствовать счету).
Какой протокол будет использоваться, чтобы заставить java и perl-компоненты разговаривать друг с другом? – innaM
Но не можете ли вы сохранить «параллелизм» одного запуска, просто продолжая запускать службы в среде '' 'apache mod_perl''' (или PSGI) и разговаривая с ними всеми с вашей новой Java Swing thingie? Это слишком медленно? По крайней мере, интерпретатор '' perl''' запускается и ждет и готов. –
Извините, я имел в виду, что мой предыдущий комментарий является еще одним вопросом/ответом относительно вашей стороны. Вы протестировали этот подход к контейнеру приложений '' 'mod_perl''? Похоже, что www.apache.org запускал или запускал '' '' Qpsmtpd''', чтобы таким образом обрабатывать доставку своих почтовых отправлений (** т.е. ** встроен как SMTP-сервис в apache '' 'mod_perl'''). Итак, '' 'apache'' и' '' mod_perl''' ... "они предназначены не только для Интернета" :-) –