Procedura: salvare i valori nello stato dell'applicazione
Aggiornamento: novembre 2007
Lo stato dell'applicazione è un repository di dati disponibile a tutte le classi in un'applicazione ASP.NET. Lo stato dell'applicazione viene memorizzato sul server e risulta più veloce dell'archiviazione e del recupero delle informazioni in un database. Diversamente dallo stato sessione, che è specifico di una sessione utente singola, lo stato dell'applicazione si applica a tutti gli utenti e a tutte le sessioni. Pertanto, lo stato dell'applicazione è una posizione utile per memorizzare piccole quantità di dati utilizzati di frequente che rimangono invariati da un utente all'altro.
Lo stato dell'applicazione viene memorizzato nella classe HttpApplicationState, di cui viene creata una nuova istanza la prima volta che un utente accede a qualsiasi risorsa URL in un'applicazione. La classe HttpApplicationState viene esposta mediante la proprietà Application.
Lo stato dell'applicazione memorizza i dati come tipi di dati Object. Una volta recuperati i dati, sarà pertanto necessario riconvertirli al tipo appropriato.
Lo stato dell'applicazione viene memorizzato sulla memoria del server; pertanto, la memoria del sever può esaurirsi rapidamente se lo stato dell'applicazione contiene quantità consistenti di dati. Se l'applicazione viene riavviata, i dati relativi allo stato dell'applicazione verranno perduti. Lo stato dell'applicazione non viene condiviso tra più server in una Web farm o tra i processi di lavoro in un Web garden. Infine, lo stato dell'applicazione è un modello di thread libero, quindi tutti i dati in esso memorizzati devono contenere un supporto di sincronizzazione incorporato. Per ulteriori informazioni su queste considerazioni, vedere Cenni preliminari sullo stato delle applicazioni ASP.NET e Suggerimenti per la gestione dello stato di ASP.NET.
Per scrivere un valore nello stato dell'applicazione
Impostare il valore della variabile nella classe HttpApplicationState dell'applicazione.
Nell'esempio di codice riportato di seguito viene illustrato come impostare la variabile Message dell'applicazione in una stringa.
Application("Message") = "Welcome to the Contoso site."
Application["Message"] = "Welcome to the Contoso site.";
Per scrivere un valore nello stato dell'applicazione all'avvio dell'applicazione
Nel gestore Application_Start del file Global.asax dell'applicazione, impostare il valore della variabile dello stato dell'applicazione. Come per una normale pagina ASPX, la classe HttpApplicationState viene esposta attraverso l'oggetto Application.
Nell'esempio di codice riportato di seguito vengono illustrate le modalità di impostazione della variabile Message dell'applicazione in una stringa, nonché le modalità di utilizzo e inizializzazione della variabile PageRequestCount su 0.
Application("Message") = "Welcome to the Contoso site." Application("PageRequestCount") = 0
Application["Message"] = "Welcome to the Contoso site."; Application["PageRequestCount"] = 0;
Scrittura di un valore nello stato dell'applicazione bloccato
Le variabili dello stato dell'applicazione sono accessibili a più thread contemporaneamente. Per impedire pertanto che vengano inseriti dati non validi, è necessario attivare un blocco scrittura per tutti i thread a esclusione di uno prima di impostare i valori.
Nota: |
---|
È sempre necessario modificare i dati dello stato dell'applicazione all'interno di in un'istruzione lock, a meno che non sia stato impostato un tipo di blocco diverso. Per ulteriori informazioni, vedere Sincronizzazione dei dati per il multithreading. |
Per scrivere un valore nello stato dell'applicazione bloccato
Nel codice in cui sono impostate le variabili dell'applicazione, chiamare il metodo HttpApplicationState.Lock, impostare il valore dello stato dell'applicazione, quindi chiamare il metodo HttpApplicationState.UnLock per sbloccare lo stato dell'applicazione, rendendolo disponibile ad altre richieste di scrittura.
Nell'esempio di codice riportato di seguito viene illustrato come bloccare e sbloccare lo stato dell'applicazione. Il codice aumenta la variabile PageRequestCount di 1, quindi sblocca lo stato dell'applicazione.
Application.Lock() Application("PageRequestCount") = _ CInt(Application("PageRequestCount")) + 1 Application.UnLock()
Application.Lock(); Application["PageRequestCount"] = ((int)Application["PageRequestCount"])+1; Application.UnLock();
Vedere anche
Attività
Procedura: leggere i valori dallo stato dell'applicazione
Concetti
Cenni preliminari sulla gestione dello stato ASP.NET
Suggerimenti per la gestione dello stato di ASP.NET