Lorenzo Pascucci
a- a+

Global.asa: cosa è, a cosa serve e perche modificarlo

Un'applicazione ASP è costituita dall'insieme dei file contenuti in una directory virtuale del Web server e nelle sue subdirectory. Può essere una semplice home page o può consistere in un complesso insieme di pagine e componenti correlati.

Come abbiamo visto a differenza di un sito Web tradizionale , un'applicazione ASP è in grado di mantenere informazioni di stato, cioè informazioni condivise tra le pagine, superando l'assenza di stato tipica del protocollo HTTP.

La gestione delle informazioni di stato viene effettuata tramite gli oggetti Application e Session. Questi oggetti consentono, oltre alla condivisione di informazioni globali all'applicazione e locali alla singola sessione utente , di gestire determinati eventi.

Infatti, a differenza di quanto avviene con l'approccio CGI o con altre tecniche di server-side scripting, con ASP l'insieme delle pagine di una applicazione è visto come un insieme unico e come tale ha un avvio e una terminazione.

L'avvio avviene alla prima richiesta ricevuta dal Web server relativa ad una pagina appartenente all'applicazione; la terminazione avviene con la fine dell'esecuzione del Web server. Inoltre ciascuna sessione utente ha anch'essa un inizio e una terminazione: l'inizio corrisponde alla prima richiesta di una pagina da parte dell'utente, mentre la terminazione si verifica in corrispondenza della scadenza di un intervallo di timeout predefinito.

L'esecuzione di script in corrispondenza dell'avvio e della terminazione di un'applicazione e/o di una sessione richiede la presenza di un file, denominato Global.asa , contenente gli script opportuni.

Il file la cui estensione .asa sta per Active Server Application, viene letto dal motore ASP all'avvio dell'applicazione e all'inizio di cisacuna sessione utente. I file Global.asa possono contenere soltanto i seguenti oggetti:

Eventi Application 
Eventi Session 
Dichiarazioni <Object> 
Dichiarazioni TypeLibrary 

Eventi Application 
Un'applicazione ASP è composta di tutti i file nella root e in ogni sua sottodirectory. Un'applicazione inizia appena l'utente apre una delle pagine Web dell'applicazione e termina in corrispondenza dello shuts down del server.

L'applicazione ha due eventi: 

l'evento Application_OnStart 
l'evento Application_OnEnd 

Possiamo realizzare script per questi eventi nel file Global.asa. Quando l'applicazione parte il server controlla nel Global.asa e processa gli script contenuti in Application_OnStart . Quando invece termina , vengono processati gli script di Application_OnEnd .

Application_OnStart
Questo evento occorre prima che la nuova sessione venga creata.
Sintassi:

<SCRIPT LANGUAGE=ScriptLanguage RUNAT=Server> 
Sub Application_OnStart
. . . 
End Sub

</SCRIPT>

Parametri
ScriptLanguage 
Specifica lo script language usato per definire l'evento. Può essere VBScript oppure JScript. 

Application_OnEnd
Questo evento occorre alla terminazione della applicazione.
Sintassi

<SCRIPT LANGUAGE=ScriptLanguage RUNAT=Server> 
Sub Application_OnEnd
. . . 
End Sub

</SCRIPT>


Parametri
ScriptLanguage 
Specifica lo script language usato per definire l'evento. Può essere VBScript oppure JScript. 
Attenzione:
Non si può chiamare il metodo MapPath nello script di Application_OnEnd

Evento Session
Il Web server crea automaticamente una nuova sessione quando un utente ( non in possesso di una sessione ) , apre una pagina Web dell'applicazione. Il server distrugge l'applicazione quando scade un timeout associato alla sessione dell'utente, oppure quando invoca il metodo Abandon.

Una sessione ha due eventi associati: 

L'evento Session_OnStart 
L'evento Session_OnEnd 

Come per l'evento Application è possibile associare a questi due eventi degli script.

Session_OnStart
L'evento Session_OnStart occorre quando il server crea una nuove sessione. Questo evento rappresenta il momento giusto per definire tutte le variabili di sessione che verranno utilizzate durante l'applicazione. Tutti gli oggetti predefiniti Application , ObjectContext , Request , Response , Server , Session sono disponibili all'interno di questo evento.
Sintassi

<SCRIPT LANGUAGE=ScriptLanguage RUNAT=Server> 
Sub Session_OnStart
. . .
End Sub

</SCRIPT>



Parametri
ScriptLanguage 
Specifica il linguaggio script utilizzato. Può essere VBScript o JScript. 

Session_OnEnd
Questo evento occorre quando una sessione viene terminata o scade il relativo timeout. Sono disponibili soltanto 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 MapPath all'interno di questo evento.

Dichiarazione degli <OBJECT> 
E' possibile creare oggetti con uno scope di sessione o applicazione nei file Global.asa usando i tag <OBJECT>. Gli oggetti creati nei file Global.asa vengono creati soltanto quando il server processa lo script che 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 al valore Session che al valore Application. 
Identifier 
Specifica il nome per l'istanza dell'oggetto. 
ProgID 
E' un identificatore che deve avere il seguente formato: [Vendor.]Component[.Version] 
ClassID 
Specifica un identificatore unico per un oggetto della classe COM. 

Esempi
Il primo esempio crea un oggetto di sessione chiamato MyConnection usando il parametro ProgID. Il secondo esempio invece 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 essere utilizzati da ogni script nell'applicazione.

Per esempio:
l’oggetto che qui viene creato nel file Global.asa può 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 pagina della applicazione.

---SOME.ASP---
 

<%= MyAd.GetAdvertisement("/ads/adrot.txt") %>

Continua>>>



Ti potrebbe interessare anche

commenta la notizia

C'è 1 commento
Luca
Ti è piaciuto l'articolo?