我一直在尝试决定我的web项目是否可以使用PSGI实现,但在现阶段我真的不知道它对我的应用程序有什么好处。
我真的不明白这些大惊小怪的事。对我来说,PSGI似乎是一个在不同Apache模块之间提供通用接口的框架,可以让你在它们之间移动应用程序。例如,轻松地将您的应用程序从在mod_perl上运行转移到fastcgi,并为在这两个选项上运行提供应用程序支持。
是这样吗,还是我错过了什么?
作为我和团队的一员,我不仅参与了应用程序的开发,还参与了服务器的维护和设置。我认为能够在fastcgi、cgi和mod_perl上运行对我们来说没有什么价值,我们只需要mod_perl就可以了。
我是否误解了PSGI的功能,或者它不适合我的项目?
忘记Apache位。这是一种编写应用程序的方式,因此Web服务器的选择变得不那么重要。在$work时,我们发现我们的应用程序在升级到Apache2后运行时CPU负载非常高,于是我们切换到了Plack/PSGI——基准测试各种Apache配置和NYTProf’ing无法确定原因,使用PSGI和Starman Web服务器对我们来说效果要好得多。
现在,一切都由我们的PSGI应用程序(URL重写、静态内容、过期标头等)在一个地方处理,而不是Apache配置,所以它是a)Perl,b)通过我们的标准/t/脚本轻松测试。此外,我们的测试现在正在测试用户所看到的内容,而不仅仅是基本的应用程序本身。
如果你对Apache和mod_perl感到满意,它可能与你无关,我相信其他人会给出更好的答案,但对我们来说,不必再处理任何与Apache相关的事情本身就是一种解脱。测试的容易性,以及只需插入Data::Dumper即可查看发生了什么,而不是与ModRewrite和朋友们争论,这是一个巨大的好处。
借用chromatic最近的一篇博客文章《为什么PSGI/Plack很重要(测试)》,内容如下:
这是一个好主意,借鉴了Python的WSGI和Ruby的Rack,但制作了Perlish;这是web应用程序开发模式的一种简单形式化,其中进入应用程序的入口点是函数引用,出口点是头部信息和响应体的元组。
就是这样。这是尽可能简单的,这种简单欺骗了很多想学习它的人。
一个重要的好处是,同上,
给定一个Plack应用程序,您不必部署到web服务器,即使是本地服务器,也可以像部署应用程序一样测试应用程序…Plack和TWMP(以及Plack::test)使用定义良好的Plack模式,将以前很难的东西变成非常容易的东西。他们不是第一个,也不会是最后一个,但他们确实证明了Plack的价值。
开始写一个答案,50行后我删除了它。简单地说,因为它不可能说出(简而言之)为什么PSGI非常酷。我也是PSGI的新手,但在我的apache/mod_perl时代,现在很多事情都比以前容易多了。
我可以给你下一个建议:
- 阅读Plack降临节日历——一天一天,循序渐进。你必须了解基本的哲学,洋葱什么好等等…:)
- 在CPAN中搜索"Plack::Middleware::",并读取每行中的前几行。这里有很多。(真的应该有一个简短的概述,不幸的是,不知道任何更快的方法。简单地说,知道已经开发了什么中间件是很好的。(例如,你肯定需要Plack::Middleware::Session,或者Plack::Middleware::Static等等…)
- 阅读Plack::Builder(当你完成降临节日历时,已经完成了):)
- 试着用它写一些应用程序,你会发现Plack就像第一次性爱一样——现在你不明白没有它你可以生活
ps:如果在这里像"PerlOscar"一样,一定会提名MyiagavaSan。:)