PSGI/格子

perl web应用程序框架和web服务器之间的超级粘合接口,就像perl是互联网的管道胶带一样。

PSGI是一种接口在Perl web应用程序和web服务器之间,Plack是一个Perl模块工具箱它包含到web服务器的PSGI中间件、帮助器和适配器。

PSGI和Plack的灵感来自PythonWSGI公司和鲁比的机架

文档

快速入门

安装cpan-minus公司然后运行以下命令以安装Plack和实用程序模块。

$cpanm Plack(美元)

人们说什么

“我喜欢这个……我认为这正是我想要的答案,一个真正简单的网络应用程序。”

-Benjamin Trott,首席技术官兼Six Apart联合基金

“哇,这简直太棒了。这对整个PSGI/Plack团队来说是一个巨大的++!”

-Stevan Little,Infinity Interactive,Moose作者

“这是我们长期以来所需要的:一种干净、简单的方式来响应HTTP请求,而无需使用CGI”

-Yuval Kogman,Infinity Interactive,KiokuDB开发者

“PSGI(是一个荒谬简单、明显漂亮的规范,用于Perl web应用程序和web服务器之间的接口。”

-Patrick Donelan,WebGUI开发人员

“感谢您加入我们!我们对未来感到非常兴奋,因为我们不必担心web服务器支持”

-Jonathan Swartz,梅森作家

“今天,我完成了一个相当大的项目,将我们的几乎所有网络内容升级到Plack上运行。完成了这个项目,一切都好了!”

-Ricardo Signes,Perl 5南瓜

“我{重黑心}PSGI。”

-Simon Cozens,《高级Perl编程》的作者

“宫川++#他妈的太棒了”

-Matt S Trout、Shadowcat Systems、Catalyst和DBIx::Class开发人员

存储库

服务器

普拉克(web服务器适配器)
Plack核心包括一个CGI运行程序(用于将任何PSGI应用程序作为CGI脚本运行)、一个FastCGI守护进程和Apache1和2的mod_perl处理程序。
HTTP::服务器::PSGI
HTTP::Server::PSGI是一个参考PSGI独立web服务器实现,包含在Plack核心发行版中。
HTTP::服务器::简单::PSGI
HTTP::Server::Simple::PSGI基于HTTP:∶Server::Simple,除HTTP::Server::Sinple本身没有任何依赖项外,它没有其他依赖项。这最适合嵌入以构建独立的web服务器或无依赖性框架。
星人
Starman是一个高性能、预工作且与PSGI兼容的HTTP服务器,具有独特的功能,例如HTTP/1.1支持、多接口支持,包括UNIX域套接字、优雅的重启和通过信号进行的动态工作池配置。
细枝
Twiggy是一个基于AnyEvent的非阻塞(异步)轻量级PSGI web服务器。最好运行基于AnyEvent的web应用程序来实现长轮询、服务器推送或WebSockets等,例如构建在Tatsumaki先生框架。
电晕
Corona是一个基于Coro的PSGI web服务器,支持每个套接字和客户端的协同程序(协作线程)。最好与AnyEvent或Coro友好的非阻塞web应用程序一起使用,如Continuity或Tatsumaki框架
Feersum公司
Feersum是一个基于电动汽车/libev公司Feersum使用单线程、基于事件的编程体系结构进行扩展,可以在CPU和RAM中高效处理许多并发连接。
Starlet公司
Kazuho Oku的Starlet基于参考HTTP::Server::PSGI web服务器,但通过Server::Starter添加了对预工作、正常重启、关闭和热部署的支持。
瞪羚
Gazelle基于Starlet,但使用基于C/XS的模块以及accept4或writev等新的Linux功能添加了许多性能优化。
阿里巴
Arriba是一个基于Starman的预工作PSGI HTTP服务器,增加了对SPDY协议
其他。HTTP服务器适配器
CPAN和Plack处理程序上有许多Perl web服务器和适配器,可以在上面运行PSGI应用程序FCGI::电动汽车,任何事件::FCGI,Danga::套接字,任何事件::HTTPD,SCGI公司,任何事件::SCGIPOE公司。它们作为单独的发行版提供。
反向HTTP
ReverseHTTP服务器允许您在桌面上或防火墙内运行PSGI应用程序,但允许通过以下方式进行外部访问反向http.net网关。
uWSGI公司
uWSGI是一个基于C的开发人员友好的WSGI服务器。从0.9.5版本开始,它包含了一个插件技术,以添加对其他语言的支持,其中包括一个嵌入式PSGI处理程序。
修改psgi
mod_psgi是一个Apache2模块,它使用嵌入式Perl解释器运行psgi应用程序。由西口次郎开发
埃夫斯基
evpsgi是一个evhttp协议基于http服务器,使用嵌入式Perl解释器运行PSGI应用程序。由Masayoshi Sekimura开发
帕尔巴尔
Perlbal::插件::PSGI允许您在Perlbal上运行PSGI应用程序。注意,由于Perlbal在非阻塞事件循环(Danga::Socket)中运行,因此您的应用程序不应该阻挡。如果您的应用程序阻塞(使用数据库访问或网络I/O),请不要使用此插件,而是使用prefork Plack服务器运行PSGI应用程序,并像往常一样反向代理到后端。
nginx嵌入式perl
大川和弘的nginx补丁允许您在嵌入式Perl解释器上运行PSGI应用程序里面nginx。考虑此修补程序高度实验性,不推荐供生产使用。建议您使用prefork/fastcgi服务器运行(可能会阻塞)PSGI应用程序,并将nginx放在前面,在这种情况下,您不需要这个补丁。

框架

催化剂
Catalyst是Perl中最流行的web应用程序框架之一,自5.9000版起就支持本机PSGI。可通过以下方式支持旧版本催化剂::发动机::PSGI
Jifty公司
Jifty是一个全栈Perl web应用程序框架,附带了延续、基于表单的分派、ORM和a Pony。Jifty用Plack模块替换了大部分内部构件。
CGI::应用程序
应用程序是一个基于CGI.pm的轻量级web框架。任何基于CGI::应用程序的应用程序都可以使用以下命令作为PSGI应用程序运行CGI::PSGICGI::应用程序::PSGI
HTTP::引擎
HTTP::Engine是一个微型web应用程序框架,是“PSGI/Plack之父”,因为我们有很多代码和想法。HTTP::引擎本身自CPAN上的0.03起就支持PSGI接口作为适配器。
舞者
Dancer是一个类似于Sinatra的微型web应用程序框架,自0.9904版起就支持PSGI。
石匠
Mason允许您在HTML模板中嵌入代码,现在可以在任何支持PSGI的web服务器上使用HTML::Mason::PSGIHandler
蹲下
蹲下是一个受露营启发的Web微框架,通过以下方式支持PSGI蹲下::打开::PSGI
连续性
Continuity是一个基于Coro的web应用程序库,支持Continuations构建有状态的应用程序,并从CPAN的1.1.1版本开始通过Coro服务器支持PSGI。
五月柱
Maypole是一个基于Struts的MVC web应用程序框架,构建于Class::DBI ORM之上五月柱::PSGI
Tatsumaki先生
Tatsumaki是一个基于Plack和AnyEvent构建的web应用程序框架:通过psgi.streaming和psgi.nonblocking、非阻塞HTTP客户端、长轮询Comet服务和服务器推送,本机支持非阻塞I/O。
Mojolicious公司
Mojolicious是受Merb和Sinatra启发的web框架,对非核心Perl模块没有依赖性。它在CPAN上有一个自0.999920以来的本机PSGI适配器。
其他框架
还有许多其他支持PSGI和Plack的框架。其中一些在CPAN上不可用,但在github上开发:Web::简单,安吉洛斯,方舟,申克尔,诺伊,神威WebNano(网络纳米)

应用

Web GUI
帕特里克·多尼兰已将PSGI/Plack构建为WebGUI 8

中间件和实用程序

CGI::PSGI
CGI.pm子类处理PSGI env散列以提供CGI.pm-兼容接口。将基于CGI.pm的web应用程序框架迁移到PSGI接口非常有用。
Plack::请求
请求和响应是PSGI环境散列和响应数组的简单包装,可以使用面向对象的API访问这些值。
IO::句柄::实用程序
实用程序模块,通过简单的界面立即创建IO::Handle-like对象。
HTTP::分析器::XS
超快速的基于XS的PSGI兼容HTTP标头解析器,在许多Plack服务器实现中使用。
CGI::仿真::PSGI
通过模拟CGI环境,将任何CGI脚本(无论是否使用CGI.pm)作为PSGI应用程序运行。它与CGI运行程序PSGI服务器实现(Plack::server::CGI)相反。也可以看看CGI::编译它将现有CGI脚本编译为可调用的子例程引用,最好与CGI::Emulate::PSGI一起使用。

幻灯片和博客帖子

请注意,一些材料和技术细节可能已经过时。

Plack手册
一本解释PSGI和Plack基础知识的小书。内容是免费的,您可以购买电子书文件下载。
Plack博客
重新记录关于PSGI和Plack的博客帖子
Plack Advent日历
24天的PSGI和Plack提示和技巧
Plack:Perl web框架和服务器的Superglue
2010年7月,O'Reilly OSCON的Tatsuhiko Miyagawa
PlebGUI:WebGUI与Plack会面
Patrick Donelan从web应用程序开发人员的角度为PSGI和Plack写了一篇很好的介绍。
我终于得到了PSGI和Plack!
Simon Cozens通过与HTTP::Engine进行比较,写了一篇关于PSGI是什么的很棒的文章。
Tatsumaki,基于Plack的非阻塞框架
宫川达彦解释了psgi.streaming接口,以在web框架中启用异步请求。日语屏幕截图也是可获得的
PSGI/Plack公司
松野德弘(Tokuhiro Matsuno)和宫川达彦(Tatsuhiko Miyagawa)出席YAPC::Asia 2009(日语)。

社区

宫川达彦的博客还有美味的书签(PSGI公司普拉克)有很多更新信息和PSGI/Plack相关条目的链接。我们正在聊天#点击irc.perl.org而且流量很小邮件列表