2011-05-26 27 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