Categorie
ASP

Il Global.asa impariamo a conoscerlo

Oggi facciamo la conoscenza del file Global.asa, un file opzionale che può contenere dichiarazioni di oggetti, variabili e metodi. Quando parliamo di Global.asa dobbiamo far riferimento all’intera applicazione Web intesa come l’insieme di file residenti sia nella root principale, sia nelle soubdirectory del nostro Web Server. Il file affinchè funzioni e venga preso in considerazione deve risiedere nella directory root del Server Web che ospita l’applicazione, in pratica dev’essere memorizzato nella directory principale della nostra applicazione ASP. Ogni applicazione potrà avere un unico e solo file Global.asa, il quale potrà contenere codice scritto non necessariamente in VBscript ma anche in un qualsiasi altro linguaggio di scripting supportato (JavaScript, JScript, PerlScript, etc..)

Il Global.asa può contenere solo le seguenti sezioni:

  • Eventi Application
  • Eventi Session
  • Dichiarazioni di oggetti (<object>)
  • Dichiarazioni TypeLibrary

Gli eventi nel Global.asa

Il Global.asa è particolarmente indicato per tutte quelle attività di inizializzazione di una applicazione come creare istanze di oggetti, inizializzare e settare variabili etc.. Tuttavia la funzione maggiormente interessante (e quella sulla quale noi ci soffermeremo) sono gli eventi, che il file può contenere.
In particolare il file potrà contenere quattro eventi, due a livello di applicazione e due a livello di sessione:

  • Application_OnStart – L’evento si verifica quando al riavvio del Web Server o dopo una modifica del global.asa stesso, un utente accede per la prima volta in una pagina dell’applicazione.
  • Session_OnStart – Questo evento si verifica ogni volta che un utente si collega per la prima volta alla nostra applicazione, quindi quando il server genera una nuova sessione. Risulta particolarmente indicato per definire tutte le variabili di sessione che saranno utilizzate all’interno dell’applicazione.
  • Session_OnEnd – L’evento avviene tutte le volte in cui un utente termina una sessione, che di solito corrisponde al tempo di timeout della sessione stessa (default 20 min.).
  • Application_OnEnd – Questo evento si verifica quando il Web Server viene per un qualsiasi motivo arrestato.
  • Vediamo ora la sintassi tipica di un file global.asa ricordando che non possiamo usare i delimitatori di script asp (<% e %>) ma dobbiamo inserire le subroutines all’interno dei tag <SCRIPT> e </SCRIPT>

    <SCRIPT LANGUAGE="VBScript" RUNAT="Server">
    
    Sub Application_OnStart
        'codice...
    End Sub 
    
    Sub Session_OnStart
        'codice...
    End Sub 
    
    Sub Session_OnEnd
        'codice...
    End Sub 
    
    Sub Application_OnEnd
        'codice...
    End Sub 
    
    </SCRIPT>

    Qualche esempio

    Esempio 1
    Partiamo con qualcosa di facile, in questo esempio, voglio memorizzare il momento in cui un utente entra nella mia applicazione, tale info la potrò utilizzare in una qualsiasi pagina del sito visto che verrà memorizzata in una variabile di sessione (inizio). Quale evento utilizzerò?

    <SCRIPT LANGUAGE="VBScript" RUNAT="Server">
    
    Sub Session_OnStart
        Session("inizio") = Now()
    End Sub
    
    </SCRIPT>

    Esempio 2
    Altro semplice esempio, supponiamo che tutte le volte che un utente accede per la prima volta vogliamo reinderizzarlo in una determinate pagina:

    <SCRIPT LANGUAGE="VBScript" RUNAT="Server">
    
    Sub Session_OnStart
        Response.Redirect("miaPagina.asp")
    End Sub
    
    </SCRIPT>

    Esempio 3
    Con questo esempio andrò a visualizzare il numero di utenti attualmente connessi sul mio sito, per ottenere il risultato utilizzerò tre eventi: Application_OnStart, Session_OnStart e Session_OnEnd.
    All’avvio dell’applicazione andrò ad inizializzare a 0 il numero degli utenti collegati, mentre ogni volta che un utente si collega aumenterò il numero di 1 mentre al termine della sessione lo diminuirò di 1. Vediamo:

    <SCRIPT LANGUAGE="VBScript" RUNAT="Server">
    
    Sub Application_OnStart()
      Application("Connessi") = 0
    End Sub
    
    Sub Session_OnStart()
      Application.Lock
      Application("Connessi") = Application("Connessi") + 1
      Application.UnLock
    End Sub
    
    Sub Session_OnEnd()
      Application.Lock
      Application("Connessi") = Application("Connessi") - 1
      Application.UnLock
    End Sub
    
    </SCRIPT>

    Esempio 4
    L’ultimo esempio che vediamo è una sorta di contatore visite, in pratica mi appoggerò su un file di testo per memorizzare il numero dei visitatori (se uno vuole può anche farlo attraverso DB). L’evento Application_OnStart lo utilizzerò per leggere il numero dei visitatori dal file txt ed assegnarlo ad una var Application. Session_OnStart mi servirà per aumentare di 1 il numero dei visitatori, mentre nell’evento Application_OnEnd andrò ad aggiornare il file di testo sovrascrivendo il nuovo numero:

    <SCRIPT LANGUAGE="VBScript" RUNAT="Server">
    
    Sub Application_OnStart()
       'apro file di testo (in lettura) leggo il nr. visitatori
       'e lo memorizzo nell'Application("Visite")
       Set fso = CreateObject("Scripting.FileSystemObject")
       Set f = fso.OpenTextFile("visitatori.dat",1,False)
       Application("Visite") =  f.Read(10)
       f.Close
    End Sub
    
    Sub Session_OnStart()
      'aumento il numero dei visitatori
      Application.Lock
      Application("Visite") = Application("Visite") + 1
      Application.UnLock
    End Sub
    
    Sub Application_OnEnd()
       'apro il file di testo (in scrittura) ed aggiorno il numero dei visitatori
       Set fso = CreateObject("Scripting.FileSystemObject")
       Set f = fso.OpenTextFile("visitatori.dat",2,True)
       f.Write Application("Visite")
       f.Close
    End Sub
    
    </SCRIPT>

    Conclusioni

    Il Global.asa non è un file comune, difatti a differenza degli altri file web non deve essere richiamato per essere eseguito, ma viene eseguito in maniera autonoma ogni volta che un browser richiama un file all’interno della nostra applicazione. Bisogna ricordare infine che il file non è obbligatorio, si può tranquillamente omettere e la nostra applicazione funzionerà perfettamente. Spesso il suo utilizzo viene trascurato (soprattutto da programmatori neofiti), tuttavia può risultare davvero molto utile se non indispensabile in determinate circostanze.

    Risorse

    http://msdn.microsoft.com/en-us/library/ms525316(VS.90).aspx

    http://www.w3schools.com/asp/asp_globalasa.asp

Una risposta su “Il Global.asa impariamo a conoscerlo”

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.