eseyman edited this page Nov 3, 2012 · 2 revisions

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 (Mark Stosberg) 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.

  • cgi_app CGI::Application ported to python! (See CgiAppPorts for a review)

  • Cgiapp.class.php CGI::Application ported to PHP! (See CgiAppPorts for more)

  • CGI::Builder began as a fork known as CGI::Application::Plus. It has since evolved in it's own direction. It includes support for form validation and refilling similiar to CGI::Application::Plugin::ValidateRM. It also includes direct integration with CGI::Session. Tread carefully with this one, and be sure to read the reviews.

  • OpenThought::Application is a sub-class of CGI::Application built to integrate with OpenThought.

  • Application::Pipeline 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. TemplateToolkit 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. 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.

-- ThiloPlanz - 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.

-- AnonGuest - 06 Mar 2005

Originally transferred from http://cgi-app.org/index.cgi?OtherFrameworks