PSGI:它是什么,有什么大惊小怪的?

时间:2011-05-26 08:14:01

标签: perl fastcgi mod-perl2 psgi

我一直在努力决定我的网络项目是否是使用PSGI实现的候选者,但我真的没有看到它在这个阶段对我的应用程序有什么好处。

我真的不明白所有的大惊小怪。对我来说,PSGI似乎是一个框架,它提供了不同Apache模块之间的通用接口,允许您在它们之间移动应用程序。例如,轻松地将您的应用程序从mod_perl上运行到fastcgi,并提供应用程序支持以在两个选项上运行。

这是对的,还是我错过了什么?

正如我和团队一样,我不仅开发应用程序,而且几乎都做维护和设置服务器,我没有看到能够在fastcgi,cgi和mod_perl上运行的价值,我们只用mod_perl做得很好。

我是否误解了PSGI功能,还是不适合我的项目?

3 个答案:

答案 0 :(得分:25)

忘掉Apache位。这是编写应用程序的一种方式,因此Web服务器的选择变得不那么重要了。在$ work工作之后,我们在升级到Apache2后发现我们的应用程序以非常高的CPU负载运行时切换到Plack / PSGI - 对各种Apache配置进行基准测试并且NYTProfing无法确定原因,并且使用PSGI和Starman网络服务器的效果要好得多对我们来说。

现在我们的PSGI应用程序(URL重写,静态内容,到期标题等)在一个地方处理所有内容而不是Apache配置,所以它是a)Perl,和b)通过我们的标准/ t /轻松测试脚本。此外,我们的测试现在正在测试用户看到的内容,而不仅仅是基本的应用程序本身。

如果您对Apache和mod_perl感到满意,那么它可能与您无关,我相信其他人将能够提供更好的答案,但对于我们而言,不必再处理与Apache相关的任何事情。这样的解脱本身。测试的简易性,以及只是坚持使用Data :: Dumper,看看发生了什么而不是与ModRewrite和朋友搏斗的能力,是一个很大的好处。

答案 1 :(得分:17)

借用chromatic,Why PSGI/Plack Matters (Testing)最近的博客文章借用,这就是它:

  

借用Python的WSGI和Ruby的Rack是一个好主意但是制作了Perlish;它是Web应用程序开发模式的简单形式化,其中应用程序的入口点是函数引用,退出点是标题信息和响应主体的元组。

     

就是这样。这很简单,而且这种简单性会欺骗很多想要学习它的人。

一个重要的好处是,同上。

  

鉴于Plack应用程序,您不必部署到Web服务器 - 甚至是本地 - 来测试您的应用程序,就像它已部署一样 ... Plack和TWMP(和{ {3}})使用定义明确的Plack模式来制作以前难以实现的非常简单的东西。他们不是第一个,他们不会是最后一个,但他们确实证明了普拉克的价值。

答案 2 :(得分:7)

开始写了一个答案,50行之后我删除了它。仅仅因为不可能告诉(简而言之)为什么PSGI非常酷。我也是PSGI的新手,但是现在zilion的东西在我的apache / mod_perl时代就像以前一样容易。

我可以给你下一个建议:

  1. 阅读Plack advent calendar - 所有日子,一步一步。你必须了解基本的哲学,洋葱等什么是好的......:)
  2. 在CPAN中搜索“Plack :: Middleware ::” - 并读取每行中的前几行。这里有很多。 (真的应该在某个地方对每一个进行一些简短的概述,遗憾的是不知道任何更快的方法。简单地知道,已经开发了哪些中间件。(例如,你肯定需要Plack :: Middleware :: Session ,或者Plack :: Middleware :: Static等等......)
  3. 阅读Plack :: Builder(已经完成,完成了降临日历):)
  4. 尝试用它写一些应用程序,并发现Plack就像第一次发生性行为 - 现在你不明白你可以没有它。
  5. PS: 如果在这里像“Perl Oscar”,肯定会提名MyiagavaSan。 :)