Clone this wiki locally
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.
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.
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.
- CGI::Maypole uses Class::DBI and Template::Toolkit to make building database-backed websites easier.
- Catalyst is by the fellow who maintains CGI::Maypole; he says Catalyst is better than Maypole (at least for more complicated projects)
- Combust -- what Perl.org still uses. Rough docs.
- Dancer - lightweight MVC framework.
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