取势 明道 优术

作者为 扶 凯 发表

自从开始 Plack 和 PSGI 的项目到现在,收大量的流行框架的作者反馈,象 Catalyst, Jifty 和 CGI::Application.
CGI::Application 是一个相当传统的 CGI 的基本的 web 应用的框架,他使用 CGI.pm 来专门处理 web 服务器的环境象我们上个文章中讲到的.
Mark Stosberg,他当前维护着 CGI::Application ,我和他共同合作添加 PSGI 的支持到 CGI::Application. 我们想到了多种方法,包括为 CGI.pm 添加原生的 PSGI 的支持.但我们最终实现 CGI::PSGI 来包装 CGI.pm .然后 CGI::Application::PSGI 运行现在的 CGI::Application 不需要变化.
如果你有从 CPAN 上安装 CGI::Application::PSGI ,那你只要写 .psgi 的文件象下面这样就行了:

use CGI::Application::PSGI;
use WebApp;

my $app = sub {
    my $env = shift;
    my $app = WebApp->new({ QUERY => CGI::PSGI->new($env) });
    CGI::Application::PSGI->run($app);
};

然后可以使用 plackup 来运行这个应用,支持 standalone 的服务器和其它的所有的.
同样的,其它的 Web 框架也提供支持 PSGI 的插件,引擎和适配到 PSGI 上的方法,如 Catalyst 可以通过 Catalyst::Engine::* 中的 Catalyst::Engine::PSGI 来修改使用 PSGI 的引擎支持.
PSGI 支持 web 框架中很重要的一点,是希望你的应用不需要做任何修改.可以有更多的时候关注你自己的代码.然后切换到 PSGI后,你会喜欢的,有很多好处像plackup,Plack::Test 和大量的中间件,我们将后面的文章中讨论.

这是我的译文,原文链接:http://advent.plackperl.org/2009/12/day-7-use-web-application-framework-in-psgi.html

来了就留个评论吧! 没有评论