Hi Michael & Michael -- 

> If you want
> a working example, check out Krang 
> (http://krang.sourceforge.net). It's
> one really big CGI::Application.

That's not true.  Krang is not "one big cgi-app".  Krang is actually
composed of multiple, separate CGI::Application modules, each launched
via their own instance script:

    htdocs/media.pl
    htdocs/history.pl
    htdocs/about.pl
    htdocs/schedule.pl
    htdocs/my_alerts.pl
    htdocs/category.pl
    htdocs/desk.pl
    htdocs/story.pl
    htdocs/media_bulk_upload.pl
    htdocs/workspace.pl
    htdocs/bug.pl
    htdocs/debug.pl
    htdocs/site.pl
    htdocs/status.pl
    htdocs/publisher.pl
    htdocs/group.pl
    htdocs/env.pl
    htdocs/user.pl
    htdocs/help.pl
    htdocs/my_pref.pl
    htdocs/desk_admin.pl
    htdocs/contributor.pl
    htdocs/login.pl
    htdocs/template.pl
    htdocs/list_group.pl

These separate applications are tied together (in some cases, very
tightly) to produce the effect of "one big application", which is the
goal for any project, I imagine.  This is done through links, sessions,
centralized security, and clear-headed thinking.

I do strongly agree that Krang is a good example of the use of
CGI-Application.  (And I'm not just saying that because I helped design
it!)  We spent time to thoughtfully consider what run modes belong in
which applications, and how they should function together.

One example of what is possible with this architecture is the
"add_message" facility.  (This elegant system was designed by Sam
Tregar.)  By cleverly using sessions and a custom CGI-Application parent
class, the developer can easily "send a message" to another page, even
if that page is in another application.  For example, if you save a
story you are redirected back to your "workspace" with a message at the
top of the screen, "Story XYZ saved".

I'm obviously a proponent of the organizational scheme Krang uses.  As
far as "multiple instance scripts":  The idea is that each "script"
(really, "each URL" -- that is the main purpose of an instance script)
represents an entry point into a task.  You could type in the URL of the
instance script and begin a task.  It's a point of "looser coupling".
IOW, the run modes *within* one CGI-App are more closely related to each
other than to a separate CGI-App.  This idea is core to the philosophy
of CGI-Application.  If you don't believe in this philosophy, I think
you might find that a server page system will work better for you.

One other note, on which I have been harping for years:  If you are
about to tell me that you can't have a separate instance script for each
application because your login system would have to be duplicated in
each application, then you're doing things wrong.  Authentication and
authorization belongs in Apache -- not in your CGI-App module.

TTYL,

-Jesse-


--
 
Jesse Erlbaum
The Erlbaum Group
[EMAIL PROTECTED]
Phone: 212-684-6161
Fax: 212-684-6226
 

---------------------------------------------------------------------
Web Archive:  http://www.mail-archive.com/cgiapp@lists.erlbaum.net/
              http://marc.theaimsgroup.com/?l=cgiapp&r=1&w=2
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to