2011-05-26 117 views
18

我一直在试图决定我的web项目是否是使用PSGI实现的候选人,但我并不真正看到它在现阶段对我的应用程序会有什么好处。PSGI:它是什么,有什么大惊小怪的?

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

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

由于我和团队成员不仅开发应用程序,而且维护和设置服务器也非常多,我不认为我们能够在fastcgi,cgi上运行并且mod_perl,我们只用mod_perl就可以。

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

+3

http://lists.scsys.co.uk/pipermail/catalyst/2011-March/026738.html – daxim 2011-05-26 09:04:28

+1

http://www.perl.org/about/whitepapers/perl-plack.html可能是感兴趣的 – Ranguard 2011-05-26 20:13:16

回答

25

忘掉Apache位。这是一种编写应用程序的方式,以便webserver的选择变得不那么重要。在$ work工作中,我们在升级到Apache2后发现我们的应用程序以非常高的CPU负载运行后切换到Plack/PSGI - 基准测试各种Apache配置和NYTProf'ing无法确定原因,并且使用PSGI和Starman网络服务器制作得更好为了我们。

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

如果你对Apache和mod_perl感到满意,它可能与你无关,而且我相信其他人可以给出更好的答案,但是对于我们而言,不需要再次处理与Apache有关的任何事情这本身就是一种解脱。测试的方便性,以及只需粘贴Data :: Dumper并查看发生了什么,而不是与ModRewrite和朋友摔跤的能力,这是一个很大的好处。

16

从色,Why PSGI/Plack Matters (Testing)最近的一篇博客借用,在这里它是什么:

这是一个从Python的WSGI和Ruby的Rack借来一个好主意,但做Perlish的;它是一种简单的Web应用程序开发模式形式化,其中入口点是一个函数引用,出口点是头信息和响应主体的元组。

就是这样。尽可能简单,简单却欺骗了很多想学习它的人。

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

给定一个普拉克应用,你没有部署到服务器甚至本地测试应用程序,就好像它被部署 ...普拉克和TWMP(和Plack::Test)的网络使用以及 - 定义Plack模式,使以前难以进入的东西变得非常容易。他们不是第一个,也不是最后一个,但他们确实证明了Plack的价值。

7

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

我可以给你下一个建议:

  1. 阅读Plack advent calendar - 所有的日子,一步一步。你必须了解基本理念,什么是好的洋葱,等等...... :)
  2. 搜索CPAN for“Plack :: Middleware ::” - 并读取每一行中的前几行。这里有很多。 (真的应该在每个地方都有一些简短的概述,不幸的是不知道有什么更快的方法,只需知道什么中间件已经开发好了(例如,您确实需要Plack :: Middleware :: Session ,或普拉克::中间件::静等...)
  3. 阅读有关普拉克::生成器(已经完成,当你出现日历完成):)
  4. 尝试写一些应用程序和意志发现比普拉克更像第一性 - 现在你不明白你可以没有它。

ps: 如果在这里像“Perl Oscar”一样,肯定会提名MyiagavaSan。 :)

+1

有趣的答案,但描述的要点。还有一件事:PSGI最棒的地方在于你的应用程序易于分层。这不仅对开发很重要,而且对于部署/维护也很重要。 – kobame 2011-05-26 13:50:40

相关问题