(You are Anonymous)

Note: page has been moved to https://github.com/markstos/CGI--Application/wiki/OtherFrameworks by Emmanuel Seyman

Other web application frameworks besides CGI::Application

Here are some other web application frameworks that people might choose as alternatives to CGI::Application for their project. They are listed here so we can compare and contrast them with CGI::Application.

CGI::App inspired and derived systems

These projects are explicitly modelled on CGI::Application, and may offer some degree of compatibility.

  • Titanium - strong, lightweight web application framework built from CGI::Application and associated plugins.
  • CAF (CGI::Application::Framework) is a complete web application framework built on CGI::Application and a selection of plugins. It provides a recommended directory layout for projects and applications and integration with Class::DBI.
  • CGI::MiniFramework - a minimalistic implementation of the core idea of CGI::Application, with minimal documentation. (Can't do much without plugins.)
  • CGI::Ex From my reading of the documentation, it appears that CGI::Ex supports a variable number of stages in the pipeline. It also has an interface to add a hook at any stage. Additionally, it has its own built-in validation system and form filling system. It integrates with Template Toolkit by default. Nearly any of the functions could be substituted for an alternative by overriding the appropriate methods.
  • Application::Pipeline This is a project by CGI::App user Stephen Howard. This is an even more abstract architecture that a CGI::App compatible system could be implemented in (think of it as an imaginary superclass of CGI::Application). Stephen explains more at perlmonks.org.

MVC Frameworks

These systems are also based on the same MVC design pattern that CGI::App is based on. So if you like the CGI:App architecture, you may also like these.

Server Page Systems

So-called "Server Page" systems are in constrast to the CGI::App archecture, as Jesse Elbaum explains some below. Template Toolkit is a special case. With restraint, it can be used a templating system alternative to HTML::Template, used directly with CGI::Application. In fact, it's a popular templating alternative for CGI::App users. On the other hand, it has many plugins and features available, allowing you to move much application logic into the templates, making it more of a 'server page' style solution.


Although it is not in for Perl, but for Java, I would recommend everyone to take a look at Apache Tapestry (http://jakarta.apache.org/tapestry/). It takes a component-oriented approach (more consequent than any other framework I have seen, I hear it is inspired by Apple Web-Objects, but I do not know WO) and also has a very cool templating system, kind of like HTML::Seamstress. I personally think it is very interesting, much more so than the well-publicized Apache Struts framework. Like I said, it is in Java, but maybe someday someone can replicate it in Perl.

Thilo Planz - 16 Jul 2003

HTTP::Server::Singlethreaded is a web server in a single perl process, for making dynamic content happen with less load than running apache + mod_perl. Wrapping CGI::App up in it, or providing a compatibility piece so that CGI::App apps could run in a standalone process, would be do-able of course.

Anon Guest - 06 Mar 2005