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公司,任何事件::SCGI和POE公司。它们作为单独的发行版提供。
- 反向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::PSGI和CGI::应用程序::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而且流量很小邮件列表。