Apache-ASP

 view release on metacpan or  search on metacpan

README  view on Meta::CPAN

    is <%= xxx %> where xxx is some scalar value that will be inserted into the
    html directly. An easy print.

      A simple asp page would look like:
  
      <!-- sample here -->
      <html>
      <body>
      For loop incrementing font size: <p>
      <% for(1..5) { %>
            <!-- iterated html text -->
            <font size="<%=$_%>" > Size = <%=$_%> </font> <br>
      <% } %>
      </body>
      </html>
      <!-- end sample here -->

    Notice that your perl code blocks can span any html. The for loop above
    iterates over the html without any special syntax.

  XMLSubs
    XMLSubs allows a developer to define custom handlers for HTML & XML tags,
    which can extend the natural syntax of the ASP environment. Configured like:

      PerlSetVar XMLSubsMatch site:\w+

    A simple tag like:

      <site:header title="Page Title" />

    can be constructed that could translate into:

      sub site::header {
          my $args = shift;
          print "<html><head><title>$args->{title}</title></head>\n";
          print "<body bgcolor=white>\n";
      }

    Better yet, one can use this functionality to trap and post process embedded
    HTML & XML like:

      <site:page title="Page Title">
        ... some HTML here ...
      </site:page>

    and then:

      sub site::page {
        my($args, $html) = @_;
        &site::header($args);
        $main::Response->Write($html);
        $main::Response->Write("</body></html>");
      }

    Though this could be used to fully render XML documents, it was not built
    for this purpose, but to add powerful tag extensions to HTML development
    environments. For full XML rendering, you ought to try an XSLT approach,
    also supported by Apache::ASP.

  Editors
    As Apache::ASP supports a mixing of perl and HTML, any editor which supports
    development of one or the other would work well. The following editors are
    known to work well for developing Apache::ASP web sites:

     * Emacs, in perl or HTML modes.  For a mmm-mode config
       that mixes HTML & perl modes in a single buffer, check 
       out the editors/mmm-asp-perl.el file in distribution.

     * Vim, special syntax support with editors/aasp.vim file in distribution.

     * UltraEdit32 ( http://www.ultraedit.com/ ) has syntax highlighting, 
       good macros and a configurable wordlist (so one can have syntax 
       highlighting both for Perl and HTML).

    Please feel free to suggest your favorite development environment for this
    list.

EVENTS
  Overview
    The ASP platform allows developers to create Web Applications. In
    fulfillment of real software requirements, ASP allows event-triggered
    actions to be taken, which are defined in a global.asa file. The global.asa
    file resides in the Global directory, defined as a config option, and may
    define the following actions:

            Action                  Event
            ------                  ------
            Script_OnStart *        Beginning of Script execution
            Script_OnEnd *          End of Script execution
            Script_OnFlush *        Before $Response being flushed to client.
            Script_OnParse *        Before script compilation
            Application_OnStart     Beginning of Application
            Application_OnEnd       End of Application
            Session_OnStart         Beginning of user Session.
            Session_OnEnd           End of user Session.

      * These are API extensions that are not portable, but were
        added because they are incredibly useful

    These actions must be defined in the $Global/global.asa file as subroutines,
    for example:

      sub Session_OnStart {
          $Application->{$Session->SessionID()} = started;
      }

    Sessions are easy to understand. When visiting a page in a web application,
    each user has one unique $Session. This session expires, after which the
    user will have a new $Session upon revisiting.

    A web application starts when the user visits a page in that application,
    and has a new $Session created. Right before the first $Session is created,
    the $Application is created. When the last user $Session expires, that
    $Application expires also. For some web applications that are always busy,
    the Application_OnEnd event may never occur.

  Script_OnStart & Script_OnEnd
    The script events are used to run any code for all scripts in an application
    defined by a global.asa. Often, you would like to run the same code for
    every script, which you would otherwise have to add by hand, or add with a
    file include, but with these events, just add your code to the global.asa,
    and it will be run.

    There is one caveat. Code in Script_OnEnd is not guaranteed to be run when
    $Response->End() is called, since the program execution ends immediately at
    this event. To always run critical code, use the API extension:

            $Server->RegisterCleanup()

  Session_OnStart
    Triggered by the beginning of a user's session, Session_OnStart gets run

README  view on Meta::CPAN

    D. L. Fox
        I had programmed in Perl for some time ... but, since I also knew VB, I
        had switched to VB in IIS-ASP for web stuff because of its ease of use
        in embedding code with HTML ... When I discovered Apache-ASP, it was
        like a dream come true. I would much rather code in Perl than any other
        language. Thanks for such a fine product!

    HOSTING 321, LLC.
        After discontinuing Windows-based hosting due to the high cost of
        software, our clients are thrilled with Apache::ASP and they swear ASP
        it's faster than before. Installation was a snap on our 25-server web
        farm with a small shell script and everything is running perfectly! The
        documentation is very comprehensive and everyone has been very helpful
        during this migration.

        Thank you!

         -- Richard Ward, HOSTING 321, LLC.

    Concept Online Ltd.
        I would like to say that your ASP module rocks :-) We have practically
        stopped developing in anything else about half a year ago, and are now
        using Apache::ASP extensively. I just love Perl, and whereever we are
        not "forced" to use JSP, we chose ASP. It is fast, reliable, versatile,
        documented in a way that is the best for professionals - so thank you
        for writting and maintaining it!

          -- Csongor Fagyal, Concept Online Ltd.

    WebTime
        As we have seen with WebTime, Apache::ASP is not only good for the
        development of website, but also for the development of webtools. Since
        I first discoverd it, I made it a must-have in my society by taking
        traditional PHP users to the world of perl afficionados.

        Having the possibility to use Apache::ASP with mod_perl or mod_cgi make
        it constraintless to use because of CGI's universality and perl's
        portability.

          -- Grégoire Lejeune

    David Kulp
        First, I just want to say that I am very very impressed with
        Apache::ASP. I just want to gush with praise after looking at many other
        implementations of perl embedded code and being very underwhelmed. This
        is so damn slick and clean. Kudos! ...

        ... I'm very pleased how quickly I've been able to mock up the
        application. I've been writing Perl CGI off and on since 1993(!) and I
        can tell you that Apache::ASP is a pleasure. (Last year I tried Zope and
        just about threw my computer out the window.)

          -- David Kulp

    MFM Commmunication Software, Inc.
        Working in a team environment where you have HTML coders and perl
        coders, Apache::ASP makes it easy for the HTML folks to change the look
        of the page without knowing perl. Using Apache::ASP (instead of another
        embedded perl solution) allows the HTML jockeys to use a variety of HTML
        tools that understand ASP, which reduces the amount of code they break
        when editing the HTML. Using Apache::ASP instead of M$ ASP allows us to
        use perl (far superior to VBScript) and Apache (far superior to IIS).

        We've been very pleased with Apache::ASP and its support.

    Planet of Music
        Apache::ASP has been a great tool. Just a little background.... the
        whole site had been in cgi flat files when I started here. I was looking
        for a technology that would allow me to write the objects and NEVER
        invoke CGI.pm... I found it and hopefuly I will be able to implement
        this every site I go to.

        When I got here there was a huge argument about needing a game engine
        and I belive this has been the key... Games are approx. 10 time faster
        than before. The games don't break anylonger. All in all a great tool
        for advancement.

          -- JC Fant IV

    Cine.gr
        ...we ported our biggest yet ASP site from IIS (well, actually rewrote),
        Cine.gr and it is a killer site. In some cases, the whole thing got
        almost 25 (no typo) times faster... None of this would ever be possible
        without Apache::ASP (I do not ever want to write ``print "<HTML>\n";''
        again).

RESOURCES
    Here are some important resources listed related to the use of Apache::ASP
    for publishing web applications. If you have any more to suggest, please
    email the Apache::ASP list at asp[at]perl.apache.org

  Articles
           Apache::ASP Introduction ( #1 in 3 part series )
           http://www.apache-asp.org/articles/perlmonth1_intro.html

           Apache::ASP Site Building ( #2 in 3 part series )
           http://www.apache-asp.org/articles/perlmonth2_build.html

           Apache::ASP Site Tuning ( #3 in 3 part series )
           http://www.apache-asp.org/articles/perlmonth3_tune.html

           Embedded Perl ( part of a series on Perl )
           http://www.wdvl.com/Authoring/Languages/Perl/PerlfortheWeb/index15.html

  Books
           mod_perl "Eagle" Book
           http://www.modperl.com

           mod_perl Developer's Cookbook
           http://www.modperlcookbook.org

           Programming the Perl DBI
           http://www.oreilly.com/catalog/perldbi/

  Reference Cards
            Apache & mod_perl Reference Cards
            http://www.refcards.com/

  Web Sites
            mod_perl Apache web module
            http://perl.apache.org

README  view on Meta::CPAN

         +optimizations for internal database, $Application, and $Session
          creation.

         +XSLTCache must be set for XSLT caching to begin using CacheDir

         +CacheDB like StateDB bug sets dbm format for caching, which
          defaults to MLDBM::Sync::SDBM_File, which works well for caching
          output sizes < 50K

         +CacheDir config for XSLT caching ... defaults to StateDir

         +CacheSize in bytes determines whether the caches in CacheDir
          are deleted at the end of the request.  A cache will be 
          reset in this way back to 0 bytes. Defaults to 10000000 bytes
          or about 10M.

         +Caching infrastructure work that is being used in XSLT
          can be leveraged later for output caching of includes,
          or arbitrary user caching.

         -t/server_mail.t test now uses valid email for testing
          purposes ... doesn't actually send a mail, but for SMTP
          runtime validation purposes it should be OK.

         +fixed where POST data was read from under MOD_PERL,
          harmless bug this was that just generated the wrong
          system debugging message.

    $VERSION = 2.19; $DATE="7/10/2001";
         +update docs in various parts

         +added ./make_httpd/build_httpds.sh scripts for quick builds
          of apache + mod_perl + mod_ssl

         ++plain CGI mode available for ASP execution.  
          cgi/asp script can now be used to execute ASP 
          scripts in CGI mode.  See CGI perldoc section for more info.
          The examples in ./site/eg have been set up to run
          in cgi mode if desired.  Configuration in CGI section
          only tested for Apache on Linux.

         -Fixed some faulty or out of date docs in XML/XSLT section.

         +added t/server_mail.t test for $Server->Mail(), requires
          Net::SMTP to be configured properly to succeed.

         +Net::SMTP debugging not enabled by Debug 1,2,3 configs,
          not only when system debugging is set with Debug -1,-2,-3
          However, a Debug param passed to $Server->Mail() will 
          sucessfully override the Debug -1,-2,-3 setting even
          when its Debug => 0

         -Check for undef values during stats for inline includes
          so we don't trigger unintialized warnings

         +Documented ';' may separate many directories in the IncludesDir
          setting for creating a more flexible includes search path.

    $VERSION = 2.17; $DATE="6/17/2001";
         +Added ASP perl mmm-mode subclass and configuration
          in editors/mmm-asp-perl.el file for better emacs support.
          Updated SYNTAX/Editors documentation.

         +Better debugging error message for Debug 2 or 3 settings 
          for global.asa errors.  Limit debug output for lines
          preceding rendered script.

         -In old inline include mode, there should no longer
          be the error "need id for includes" when using
          $Response->Include() ... if DynamicIncludes were
          enabled, this problem would not have likely occured
          anyway.  DynamicIncludes are preferrable to use so
          that compiled includes can be shared between scripts.
          This bug was likely introduced in version 2.11.

         -Removed logging from $Response->BinaryWrite() in regular
          debug mode 1 or 2.  Logging still enabled in system Debug mode, -1 or -2

         -Removed other extra system debugging call that is really not
          necessary.

    $VERSION = 2.15; $DATE="06/12/2001";
         -Fix for running under perl 5.6.1 by removing parser optimization
          introduced in 2.11.

         -Now file upload forms, forms with ENCTYPE="multipart/form-data"
          can have multiple check boxes and select items marked for 
          @params = $Request->Form('param_name') functionality.  This 
          will be demonstrated via the ./site/eg/file_upload.asp example.

    $VERSION = 2.11; $DATE="05/29/2001";
         +Parser optimization from Dariusz Pietrzak

         -work around for global destruction error message for perl 5.6
          during install

         +$Response->{IsClientConnected} now will be set
          correctly with ! $r->connection->aborted after each
          $Response->Flush()

         +New XSLTParser config which can be set to XML::XSLT or
          XML::Sablotron.  XML::Sablotron renders 10 times faster, 
          but differently.  XML::XSLT is pure perl, so has wider
          platform support than XML::Sablotron.  This config affects
          both the XSLT config and the $Server->XSLT() method.

         +New $Server->XSLT(\$xsl_data, \$xml_data) API which 
          allows runtime XSLT on components instead of having to process
          the entire ASP output as XSLT.  

         -XSLT support for XML::XSL 0.32.  Things broke after .24.

         -XSLTCacheSize config no longer supported.  Was a bad 
          Tie::Cache implementation.  Should be file based cache
          to greatly increases cache hit ratio.

         ++$Response->Include(), $Response->TrapInclude(),
          and $Server->Execute() will all take a scalar ref
          or \'asdfdsafa' type code as their first argument to execute 
          a raw script instead of a script file name.  At this time, 
          compilation of such a script, will not be cached.  It is 
          compiled/executed as an anonymous subroutine and will be freed
          when it goes out of scope.

         + -p argument to cgi/asp script to set GlobalPackage
          config for static site builds

         -pod commenting fix where windows clients are used for 
          ASP script generation.

         +Some nice performance enhancements, thank to submissions from
          Ime Smits.  Added some 1-2% per request execution speed.

         +Added StateDB MLDBM::Sync::SDBM_File support for faster
          $Session + $Application than DB_File, yet still overcomes
          SDBM_File's 1024 bytes value limitation.  Documented in 
          StateDB config, and added Makefile.PL entry.

         +Removed deprecated MD5 use and replace with Digest::MD5 calls

         +PerlSetVar InodeNames 1 config which will compile scripts hashed by 
          their device & inode identifiers, from a stat($file)[0,1] call.
          This allows for script directories, the Global directory,
          and IncludesDir directories to be symlinked to without
          recompiling identical scripts.  Likely only works on Unix
          systems.  Thanks to Ime Smits for this one.

         +Streamlined code internally so that includes & scripts were
          compiled by same code.  This is a baby step toward fusing
          include & script code compilation models, leading to being
          able to compile bits of scripts on the fly as ASP subs, 
          and being able to garbage collect ASP code subroutines.

         -removed @_ = () in script compilation which would trigger warnings 
          under PerlWarn being set, thanks for Carl Lipo for reporting this.

         -StatINC/StatINCMatch fix for not undeffing compiled includes
          and pages in the GlobalPackage namespace

         -Create new HTML::FillInForm object for each FormFill
          done, to avoid potential bug with multiple forms filled
          by same object.  Thanks to Jim Pavlick for the tip.

         +Added PREREQ_PM to Makefile.PL, so CPAN installation will
          pick up the necessary modules correctly, without having
          to use Bundle::Apache::ASP, thanks to Michael Davis. 

         + > mode for opening lock files, not >>, since its faster

         +$Response->Flush() fixed, by giving $| = 1 perl hint
          to $r->print() and the rest of the perl sub.

         +$Response->{Cookies}{cookie_name}{Expires} = -86400 * 300;
          works so negative relative time may be used to expire cookies.

         +Count() + Key() Collection class API implementations

         +Added editors/aasp.vim VIM syntax file for Apache::ASP,
          courtesy of Jon Topper.

         ++Better line numbering with #line perl pragma.  Especially
          helps with inline includes.  Lots of work here, & integrated
          with Debug 2 runtime pretty print debugging.

         +$Response->{Debug} member toggles on/off whether 
          $Response->Debug() is active, overriding the Debug setting
          for this purpose.  Documented.

         -When Filter is on, Content-Length won't be set and compression
          won't be used.  These things would not work with a filtering
          handler after Apache::ASP

    $VERSION = 2.09; $DATE="01/30/2001";
         +Examples in ./site/eg are now UseStrict friendly.  
          Also fixed up ./site/eg/ssi_filter.ssi example.

         +Auto purge of old stale session group directories, increasing 
          session manager performance when using Sessions when migrating
          to Apache::ASP 2.09+ from older versions.

         +SessionQueryParse now works for all $Response->{ContentType}
          starting with 'text' ... before just worked with text/html,
          now other text formats like wml will work too. 

         +32 groups instead of 64, better inactive site session group purging.

         +Default session-id length back up to 32 hex bytes.
          Better security vs. performance, security more important,
          especially when performance difference was very little.

         +PerlSetVar RequestParams 1 creates $Request->Params
          object with combined contents of $Request->QueryString
          and $Request->Form

         ++FormFill feature via HTML::FillInForm.  Activate with
          $Response->{FormFill} = 1 or PerlSetVar FormFill 1
          See site/eg/formfill.asp for example.

         ++XMLSubs tags of the same name may be embedded in each other
          recursively now.

         +No umask() use on Win32 as it seems unclear what it would do

         +simpler Apache::ASP::State file handle mode of >> when opening 
          lock file.  saves doing a -e $file test.

         +AuthServerVariables config to init $Request->ServerVariables
          with basic auth data as documented.  This used to be default
          behavior, but triggers "need AuthName" warnings from recent
          versions of Apache when AuthName is not set.

         -Renamed Apache::ASP::Loader class to Apache::ASP::Load
          as it collided with the Apache::ASP->Loader() function
          namespace.  Class used internally by Apache::ASP->Loader()
          so no public API changed here.

         +-Read of POST input for $Request->BinaryRead() even
           if its not from a form.  Only set up $Request->Form



( run in 0.611 second using v1.01-cache-2.11-cpan-39bf76dae61 )