The following module was proposed for inclusion in the Module List:

  modid:       MasonX::ApacheHandler::WithCallbacks
  DSLIP:       bmpOp
  description: Execute code before Mason components
  userid:      DWHEELER (David Wheeler)
  chapterid:   15 (World_Wide_Web_HTML_HTTP_CGI)
  communities:
    [EMAIL PROTECTED]

  similar:
    MasonX::Request::WithApacheSession

  rationale:

    This module allows callbacks to be triggered by form field names
    (or other Mason arguments) before any Mason components are loaded
    and executed by Mason. Why would you want to do this? Well, there
    are a number of reasons. Some I can think of offhand include:

    Stricter separation of logic from presentation:
    ---------------------------------------------- Most application
    logic handled in Mason components takes place in <%init> blocks,
    often in the same component as presentation logic. By moving the
    application logic into subroutines in Perl modules and then
    directing Mason to execute those subroutines as callbacks, you
    obviously benefit from a cleaner separation of application logic and
    presentation.

    Wigitization: ------------ Thanks to their ability to preprocess
    arguments, callbacks enable developers to develop easier-to-use,
    more dynamic widgets that can then be used in any Mason components.
    For example, a widget that puts many related fields into a form
    (such as a date selection widget) can have its fields preprocessed
    by a callback (for example, to properly combine the fields into a
    unified date field) before the Mason component that responds to the
    form submission gets the data.

    Shared Memory ------------- Callbacks are just Perl subroutines in
    modules loaded at server startup time. Thus the memory they consume
    is all in the parent, and then shared by the Apache children. For
    code that executes frequently, this can be much less
    resource-intensive than code in Mason components, since components
    are loaded separately in each Apache child process (unless they're
    preloaded via the preloads parameter to the HTML::Mason::Interp
    constructor).

    Performance ----------- Since callbacks are executed before Mason
    creates a component stack and executes the components, they have the
    opportunity to short-circuit the Mason processing by doing something
    else. A good example is redirection. Often the application logic in
    callbacks does its thing and then redirects the user to a different
    page. Executing the redirection in a callback eliminates a lot of
    extraneous processing that would otherwise be executed before the
    redirection, creating a snappier response for the user.

    Testing ------- Mason components are not easy to test via a testing
    framework such as Test::Harness. Subroutines in modules, on the
    other hand, are fully testable. This means that you can write tests
    in your application test suite to test your callback subroutines.

    And if those are enough reasons, then just consider this: Callbacks
    just way cool.

  enteredby:   DWHEELER (David Wheeler)
  enteredon:   Mon Mar 24 16:31:02 2003 GMT

The resulting entry would be:

MasonX::ApacheHandler::
::WithCallbacks   bmpOp Execute code before Mason components         DWHEELER


Thanks for registering,
-- 
The PAUSE

PS: The following links are only valid for module list maintainers:

Registration form with editing capabilities:
  
https://pause.perl.org/pause/authenquery?ACTION=add_mod&USERID=f2400000_d5d41d0ac91b1383&SUBMIT_pause99_add_mod_preview=1
Immediate (one click) registration:
  
https://pause.perl.org/pause/authenquery?ACTION=add_mod&USERID=f2400000_d5d41d0ac91b1383&SUBMIT_pause99_add_mod_insertit=1

Reply via email to