如何构建将页面移动到页面的CGI程序?

时间:2010-09-20 07:01:50

标签: perl cgi

我对Perl CGI程序有一般性质疑。对于少数应用程序,不使用MVC,开发人员编写CGI程序,可能使用CGI.pm或他们喜欢的其他方式,并且从屏幕移动到sceen,编写新的CGI程序(使用 - CVS TAGS,Perl header等等。)。

但我觉得如果有其他程序不需要的东西(子程序或业务逻辑),我会继续调用基于一个额外Role参数调用的每个页面的相同脚本。我得到的好处是一次头部声明,易于维护,

%frmData = CGI::Lite->parse_form_data();
$Role    = $frmData{Role};
if ($Role eq 'A'){ getPageFirst()}
elsif ($Role eq 'B'){ getPageB()}  etc..

这是正确的做法吗?我们可以面对某种问题。什么是最好的方法?

2 个答案:

答案 0 :(得分:2)

我认为将一堆功能(几个CGI)合并到一个文件中并不能真正帮助维护。

另一种方法是将CGI分开,并将公共代码放入单独的文件(例如Perl模块)中,每个文件都可以包含。

你提到你担心包含所有CGI不必要的东西。在我看来,通过组合的大CGI,你实际上使这种情况变得更糟。使用模块,您可以包含所需内容。

  

我们可以面对某种问题吗?

CGI可能遇到的第一个问题是性能,因为脚本需要一直重新加载。所以你想看看像FastCGI这样的东西,它将脚本(和库)保存在请求之间的内存中。如果你去那里,将你的代码库正确分成模块会有所帮助。

答案 1 :(得分:1)

仅基于您所说的内容,我会说您正在创建一个维护噩梦,即将相同的代码复制到多个程序中,并在每个程序中执行相同的逻辑。至少,您可能希望将其移动到共享库中。

听起来你可能会遇到CGI::Prototype要解决的问题。它处理选择您应该在的页面,并允许您为其分配正确的处理程序。这是一个最小的框架,不能提供更多的东西。

如果不了解您正在做的事情,很难给出更好的答案。