【发布时间】:2013-06-03 20:04:57
【问题描述】:
短版:
我应该使用什么标准来评估 Perl“应用服务器”(mod_perl 替换)的可能候选者?
我们正在寻找某种框架,它允许重复执行各种 Perl 程序(作为服务),而无需以下成本:
每次执行都重新启动 perl 解释器一次
每次执行加载/编译 Perl 模块一次
(这两个都是运行 mod_perl 提供的好处)
注意事项:
我们不太关心 mod_perl 提供的任何额外好处,例如深度 Apache 集成。
-
这将是一个纯应用服务器,这意味着不需要任何特定于 Web 的功能(如果应用服务器提供它就没有问题,只是不需要)。
李> 我们当然会考虑明显的标准(原始速度、生产就绪稳定性、积极开发、在我们关心的操作系统上运行的能力)。我感兴趣的是我们可能希望从这样的框架/服务器中获得不那么琐碎和微妙的东西。
背景:
在 $work 中,决定他们想要替换当前情况的权力(在 Embperl 中开发并通过 Apache/mod_perl 部署的简单 web 应用程序)。
决定使用(本土)MVC 系统,该系统将为 View 提供 Java Spring 前端;并且控制器将解析后端服务请求到执行模型职责的每个应用程序服务(不要挂断这个细节 - 它与主要问题不太相关)。
后端服务的一个选项是 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 Web 开发的人会立即注意到新设计最明显的问题:
| 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 作为持久服务器端应用程序容器所提供的任何性能优势!!!
因此,我们正在寻找可能的应用容器来提供相同的功能。
(作为旁注,是的,我们考虑过简单地运行一个带有 mod_perl 的 Apache 实例作为这样的应用程序容器,这是一种可行的可能性。但是,由于不需要 Web 功能,我想看看是否有其他选项可能适合)。
【问题讨论】:
-
将使用什么协议使 java 和 perl 部分相互通信?
-
但是你不能通过继续在
apache mod_perl环境(或 PSGI)中运行服务并从你的新 Java Swing 事物中与它们交谈来保持一个启动的“并行性”吗?是不是太慢了?至少perl解释器正在运行,等待并准备就绪。 -
对不起,我的意思是我之前的评论是关于您的旁注的进一步问题/回应。您是否测试过这种
mod_perl应用容器方法?似乎 www.apache.org 以这种方式运行或运行Qpsmtpd来帮助处理他们的邮件列表传递(即作为 SMTP 服务嵌入到 apachemod_perl实例中)。所以apache和mod_perl...“它们不仅仅用于网络”:-) -
@innaM - 协议不是非常相关(如灵活)。当前的无应用服务器设计只是简单的命令行界面,在 STDIN 上传递等效的查询字符串并将 JSON 响应发送到 STDOUT。
-
@G.Cito - 是的,mod_perl 是可能的替代品之一。但是,我们需要看看是否存在更好的替代方案。
标签: perl web-applications application-server mod-perl