The following module was proposed for inclusion in the Module List:
modid: HTML::Application
DSLI: adpO
description: Framework for complex portable web apps
userid: DUNCAND (Darren Duncan)
chapterid: 15 (World_Wide_Web_HTML_HTTP_CGI)
communities:
mailing lists, individuals
similar:
HTML::Mason CGI::Application CGI::Screen CGI
rationale:
My module has been uploaded to PAUSE today as
HTML-Application-0.38. It has complete POD; please look at the
Synopsis and Overview sections, as well as glance over the main
groups of method descriptions. I have reprinted the Description
below:
DESCRIPTION
This Perl 5 object class is a framework intended to support complex
web applications that are easily portable across servers because
common environment-specific details are abstracted away, including
the file system type, the web server type, and your project's
location in the file system or uri hierarchy. In addition, this
class can make it easier for your applications to be broken down
into reusable data-controlled components, each of which would act
like it was its own application, which receives user input and
instance configuration data some how, and returns an HTML page or
other HTTP response.
YOUR THIN HTML::Application YOUR FAT "CORE" USER <----> "MAIN"
CONFIG, <----> INTERFACE LAYER <----> PROGRAM LOGIC I/O SHELL
FRAMEWORK FUNCTIONALITY (may be portable) (portable) (portable)
This class does not gather any user input or send any user input by
itself, but expects your thin program instance shell to do that. The
rationale is both for keeping this class simpler and for keeping it
compatible with all types of web servers instead of just the ones it
knows about. So it works equally well with CGI under any server or
mod_perl or when your Perl is its own web server or when you are
debugging on the command line.
I believe that there are no other modules like mine, but here are
some which could be thought of a similar, since they deal with
multi-screen CGI apps:
CGI:: ::Application RmpO Framework for building reusable web-apps
JERLBAUM ::Screen adpO Create multi screen CGI-scripts ULPFR HTML::
::Mason bdpO Build sites from modular Perl/HTML blocks JSWARTZ
Given the range of features and complexity, I would say that my
module would fit between the first two and the last one. That is, my
module would provide a lot of functionality that CGI::Application
and CGI::Screen do not, while it is an order of magnitude or three
less complex than HTML::Mason.
Significant differences between my module and HTML::Mason include:
- Mason, as I understand, uses an ASP or PHP like approach that has
otherwise complete HTML pages with embedded Perl code and/or
"include" syntax. My approach does the opposite of having Perl files
first, and the HTML is either embedded in them or in separate data
files. - My version works on functionality over form and serves
programmers first, making it more focused on actual "applications"
that do something rather than "web sites" that display content
(although my program can "be" a web site too"). Whereas, Mason is
more focused on keeping visual designers with their graphical HTML
editors in front, with code added for enhancement, as I understand
it. - I don't do any explicit user input or output myself whereas
Mason appears to do "the whole experience". - Lots of other
differences.
Differences between my module and CGI::Application include: -
CGI::Application does not organize its "run modes" hierarchically
whereas I do. - CGI::Application gathers user input using CGI.pm and
it prints page results to the browser, whereas I don't automatically
use a particular input method and I don't print things out.
Differences from CGI::Screen include: - CGI::Screen subclasses from
CGI.pm and is therefore strongly tied to it, and mine is not. - My
module doesn't generate form html and such. - It is still a lot
simpler than mine as far as added value goes. - Likewise, no
hierarchy for organizing screens.
enteredby: DUNCAND (Darren Duncan)
enteredon: Sat Apr 21 08:40:31 2001 GMT
The resulting entry would be:
HTML::
::Application adpO Framework for complex portable web apps DUNCAND
Thanks for registering,
The Pause Team
PS: The following links are only valid for module list maintainers:
Registration form with editing capabilities:
http://pause.perl.org/pause/authenquery?ACTION=add_mod&USERID=b1000000_2a8dd50fd3320537&SUBMIT_pause99_add_mod_preview=1
Immediate (one click) registration:
http://pause.perl.org/pause/authenquery?ACTION=add_mod&USERID=b1000000_2a8dd50fd3320537&SUBMIT_pause99_add_mod_insertit=1