Perl PSGI:它是什么和什么';有什么大惊小怪的?

Perl PSGI:它是什么和什么';有什么大惊小怪的?,perl,fastcgi,mod-perl2,psgi,Perl,Fastcgi,Mod Perl2,Psgi,我一直在尝试确定我的web项目是否适合使用PSGI实现,但在现阶段,我并不认为它对我的应用程序有什么好处 我真的不明白所有的大惊小怪。在我看来,PSGI似乎是一个框架,它在不同的Apache模块之间提供了一个公共接口,允许您在它们之间移动应用程序。e、 g轻松地将您的应用程序从在mod_perl上运行移动到fastcgi,并为在这两个选项上运行提供应用程序支持 是这样,还是我错过了什么 作为我和团队的一员,我不仅参与开发应用程序,而且还参与服务器的维护和设置。我不认为能够在fastcgi、cgi

我一直在尝试确定我的web项目是否适合使用PSGI实现,但在现阶段,我并不认为它对我的应用程序有什么好处

我真的不明白所有的大惊小怪。在我看来,PSGI似乎是一个框架,它在不同的Apache模块之间提供了一个公共接口,允许您在它们之间移动应用程序。e、 g轻松地将您的应用程序从在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和朋友纠缠的能力,是一个巨大的好处

借用Coloric最近的一篇博文,内容如下:

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

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

同上,一个重要的好处是

给定一个Plack应用程序,即使在本地也不必部署到web服务器来测试应用程序,就像它被部署一样…Plack和(和)使用定义良好的Plack模式将以前很难的东西变成非常简单的东西。他们不是第一个,也不会是最后一个,但他们确实证明了普拉克的价值


我写了一个答案,写了50行后我把它删掉了。仅仅因为不可能(简而言之)说出为什么PSGI非常酷。我在PSGI方面也是新手,但是在我的apache/mod_perl时代,zilion现在的事情比以前容易多了

我可以给你下一个建议:

  • 一步一步地阅读-全天。你必须理解基本的哲学,洋葱的好处是什么等等……:)
  • 在CPAN中搜索“Plack::Middleware::”-并阅读每一行的前几行。这里有很多。(真的应该在某个地方对每一个都做一些简短的概述,不幸的是,我不知道任何更快的方法。简单地说,最好知道已经开发了哪些中间件。(例如,您肯定需要Plack::Middleware::Session,或Plack::Middleware::Static等等)
  • 阅读Plack::Builder(已经完成了,当您使用降临节日历时):)
  • 试着用它写一些应用程序,你会发现比普拉克就像第一次做爱——现在你不明白没有它你可以活下去
  • 附言:
    如果这里有类似“Perl奥斯卡”的东西,肯定会提名MyiagavaSan。:)

    可能是有趣有趣的答案,但描述了要点。还有一件事:PSGI上最好的事情是应用程序的简单分层。这不仅对开发很重要,对部署/维护也很重要。