Global.asa: cosa è, a cosa serve e perche modificarlo
Un'applicazione ASP è costituita dall'insiemedei file contenuti in una directory virtuale del Web server enelle sue subdirectory. Può essere una semplice homepage o può consistere in un complesso insieme dipagine e componenti correlati.
Come abbiamo visto a differenza di un sito Web tradizionale ,un'applicazione ASP è in grado di mantenereinformazioni di stato, cioè informazioni condivise trale pagine, superando l'assenza di stato tipica delprotocollo HTTP.
La gestione delle informazioni di stato viene effettuatatramite gli oggetti Application e Session. Questi oggetticonsentono, oltre alla condivisione di informazioni globaliall'applicazione e locali alla singola sessione utente ,di gestire determinati eventi.
Infatti, a differenza di quanto avviene con l'approccioCGI o con altre tecniche di server-side scripting, con ASPl'insieme delle pagine di una applicazione è vistocome un insieme unico e come tale ha un avvio e unaterminazione.
L'avvio avviene alla prima richiesta ricevuta dal Webserver relativa ad una pagina appartenenteall'applicazione; la terminazione avviene con la finedell'esecuzione del Web server. Inoltre ciascuna sessioneutente ha anch'essa un inizio e una terminazione:l'inizio corrisponde alla prima richiesta di una paginada parte dell'utente, mentre la terminazione si verificain corrispondenza della scadenza di un intervallo di timeoutpredefinito.
L'esecuzione di script in corrispondenza dell'avvio edella terminazione di un'applicazione e/o di una sessionerichiede la presenza di un file, denominato Global.asa ,contenente gli script opportuni.
Il file la cui estensione .asa sta per Active ServerApplication, viene letto dal motore ASP all'avviodell'applicazione e all'inizio di cisacuna sessioneutente. I file Global.asa possono contenere soltanto iseguenti oggetti:
Eventi Application
Eventi Session
Dichiarazioni <Object>
Dichiarazioni TypeLibrary
Eventi Application
Un'applicazione ASP è composta di tutti ifile nella root e in ogni sua sottodirectory.Un'applicazione inizia appena l'utente apre una dellepagine Web dell'applicazione e termina in corrispondenzadello shuts down del server.
L'applicazione ha due eventi:
l'evento Application_OnStart
l'evento Application_OnEnd
Possiamo realizzare script per questi eventi nel fileGlobal.asa. Quando l'applicazione parte il servercontrolla nel Global.asa e processa gli script contenuti inApplication_OnStart . Quando invece termina , vengonoprocessati gli script di Application_OnEnd .
Application_OnStart
Questo evento occorre prima che la nuova sessione vengacreata.
Sintassi:
<SCRIPT LANGUAGE=ScriptLanguage RUNAT=Server> Sub Application_OnStart. . . End Sub</SCRIPT>
Parametri
ScriptLanguage
Specifica lo script language usato per definirel'evento. Può essere VBScript oppureJScript.
Application_OnEnd
Questo evento occorre alla terminazione dellaapplicazione.
Sintassi
<SCRIPT LANGUAGE=ScriptLanguage RUNAT=Server> Sub Application_OnEnd. . . End Sub</SCRIPT>
Parametri
ScriptLanguage
Specifica lo script language usato per definirel'evento. Può essere VBScript oppureJScript.
Attenzione:
Non si può chiamare il metodo MapPath nello script diApplication_OnEnd
Evento Session
Il Web server crea automaticamente una nuova sessionequando un utente ( non in possesso di una sessione ) , apreuna pagina Web dell'applicazione. Il server distruggel'applicazione quando scade un timeout associato allasessione dell'utente, oppure quando invoca il metodoAbandon.
Una sessione ha due eventi associati:
L'evento Session_OnStart
L'evento Session_OnEnd
Come per l'evento Application è possibileassociare a questi due eventi degli script.
Session_OnStart
L'evento Session_OnStart occorre quando il servercrea una nuove sessione. Questo evento rappresenta il momentogiusto per definire tutte le variabili di sessione cheverranno utilizzate durante l'applicazione. Tutti glioggetti predefiniti Application , ObjectContext , Request ,Response , Server , Session sono disponibili all'internodi questo evento.
Sintassi
<SCRIPT LANGUAGE=ScriptLanguage RUNAT=Server> Sub Session_OnStart. . .End Sub</SCRIPT>
Parametri
ScriptLanguage
Specifica il linguaggio script utilizzato. Può essereVBScript o JScript.
Session_OnEnd
Questo evento occorre quando una sessione vieneterminata o scade il relativo timeout. Sono disponibilisoltanto gli oggetti predefiniti Application , Server ,Session.
Sintassi
<SCRIPT LANGUAGE=ScriptLanguage RUNAT=Server> Sub Session_OnEnd. . . End Sub</SCRIPT>
Parametri
ScriptLanguage
JScript o VBScript.
Attenzione
Non è possibile utilizzare il metodo MapPathall'interno di questo evento.
Dichiarazione degli <OBJECT>
E' possibile creare oggetti con uno scope disessione o applicazione nei file Global.asa usando i tag<OBJECT>. Gli oggetti creati nei file Global.asavengono creati soltanto quando il server processa lo scriptche contiene quell'oggetto, in questo modo èpossibile risparmiare risorse di sistema.
Sintassi
<OBJECT RUNAT=Server SCOPE=Scope ID=Identifier {PROGID="progID"|CLASSID="ClassID"}>. . .</OBJECT>
Parametri
Scope
Specifica la visibilità ( scope ) dell'oggetto.Nei file Global.asa, Scope può essere posto sia alvalore Session che al valore Application.
Identifier
Specifica il nome per l'istanzadell'oggetto.
ProgID
E' un identificatore che deve avere il seguente formato:[Vendor.]Component[.Version]
ClassID
Specifica un identificatore unico per un oggetto dellaclasse COM.
Esempi
Il primo esempio crea un oggetto di sessione chiamatoMyConnection usando il parametro ProgID. Il secondo esempioinvece crea l’oggetto usando il parametro ClassID.
<OBJECT RUNAT=Server SCOPE=Session ID=MyConnection PROGID="ADODB.Connection">REM Object Script</OBJECT><OBJECT RUNAT=Server SCOPE=Session ID=MyConnection CLASSID="Clsid:8AD3067A-B3FC-11CF-A560-00A0C9081C21">REM Object Script</OBJECT>
Attenzione
Gli oggetti creati nel file Global.asa possono essereutilizzati da ogni script nell'applicazione.
Per esempio:
l’oggetto che qui viene creato nel file Global.asapuò essere usato da qualunque script del progetto.
---GLOBAL.ASA---
<OBJECT RUNAT=Server SCOPE=Session ID=MyAd PROGID="MSWC.AdRotator"></OBJECT>
Possiamo far riferimento all'oggetto MyAd in ogni paginadella applicazione.
---SOME.ASP---
<%= MyAd.GetAdvertisement("/ads/adrot.txt") %>
Continua>>>