On Thu, 27 Jan 2000, Doug MacEachern wrote:
> I'm not convinced NG is the final solution, but
> something like it where the functionality is broken
> apart and re-usable, unlike the existing Registry.pm
> where everything is all lumped in together.
in order for this cgi emulation system to really make sense,
we need to re-examine the responsibilities of the registry
modules and perform a more explicit separation of behaviors
into classes. this will make it much easier for everybody to
understand their options: 1) use the strict cgi emulation
layer; 2) use the 'bare bones' cgi emulation layer; 3) write
your own cgi emulation layer.
seems to me we are looking at this set of classes, or at
least namespaces:
registry registry bb custom
| | |
------------------------------
| |
script --- handler
compiler cache
by providing script compiler and handler cache subclasses,
we can provide ways for folks to do things like: extending
the script compiler to import additional symbols into their
handlers' namespaces; using a disk or shared memory handler
cache; etc.
this layering could prove very useful to application
framework developers. if you look at platypus
(http://www.maz.org/platypus) for instance, the presentation
subsystem is pretty independent of the rest of the
framework; you just have to provide classes that implement a
specific set of interfaces. i have some code that embeds
mason as the presentation subsystem for platypus, altho that
code isnt yet in the distribution. with the above layering,
i could subclass the script compiler and handler cache,
which would allow me to provide two presentation options out
of the box with platypus: template based and cgi emulation.
i'd really like to see this entire subsystem packaged
together (along with the registry loader) inside the
distribution, with its own distinct, coherent set of
documentation and examples. i think part of people's
confusion stems from the fact that the relationships aren't
obvious or well-documented between the various components of
the cgi emulation subsystem.
i have some time coming up in the next few weeks, so unless
somebody gets to it before me, i'll look more concretely
into this idea then.