[英]How can I write a Perl web app that supports CGI, FastCGI and mod_perl?
如何在Perl中編寫Web應用程序,以便它可以作為普通CGI腳本,FastCGI / FCGI腳本和mod_perl
/ mod_perl2
(最好只使用核心Perl模塊和來自libwww-Perl的模塊,並最小化Perl CPAN的數量)模塊一個必須安裝)? 我想盡量減少將腳本從使用CGI更改為使用FastCGI或mod_perl的腳本所需做的更改。
進一步的約束:如果可能的話,我想在單個文件中記錄Web應用程序,而不是像目前那樣將它拆分為模塊。
有問題的網絡應用程序是gitweb,Git web界面,如果重要的話。
我很驚訝沒有人給出明顯的答案。 使用催化劑 。 使用Catalyst,在任何Web環境中部署都很簡單,包括vanilla CGI,FastCGI,mod_perl等。
將功能放在模塊中。 使腳本只執行一個功能:選擇要實例化的應用程序模塊並處理特定於平台的內容,然后委派給常用功能。 因此,您將最終使用一個腳本來調用,三個或四個模塊來實現每個平台,以及一個模塊來實現一般功能。
App/bin/app.pl
App/lib/App/Common.pm
App/lib/App/Apache1.pm
App/lib/App/Apache2.pm
App/lib/App/CGI.pm
App/lib/App/FCGI.pm
正如Sinan指出的那樣,您將代碼分成了模塊。 他沒有使用魔術術語“模型 - 視圖 - 控制器”(MVC)。 你真的在問如何使用MVC並支持多個控制器。 您的模型和視圖是相同的,並且您的不同控制器使用它們來驅動應用程序。
另一種可能的解決方案是使用HTTP :: Engine
(另請參閱Perl Programming / HTTP :: Engine wikibook)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.