Inserimento nella cache in ASP.NET con la classe SqlCacheDependency
Aggiornamento: novembre 2007
ASP.NET consente di utilizzare la classe SqlCacheDependency per creare una dipendenza dell'elemento della cache da una tabella o una riga di un database. Quando la tabella o una riga specifica vengono modificate, l'elemento con una dipendenza da queste viene invalidato e rimosso dalla cache. È possibile impostare una dipendenza da una tabella in Microsoft SQL Server 7.0, SQL Server 2000 e SQL Server 2005. Se si utilizza SQL Server 2005, è anche possibile impostare una dipendenza da un record specifico.
In alcuni contesti, l'utilizzo della memorizzazione nella cache con una dipendenza SQL induce un notevole miglioramento delle prestazioni dell'applicazione. Si supponga, ad esempio, di compilare un'applicazione e-commerce in cui siano visualizzate informazioni sui prodotti estrapolate da un database. Senza la funzionalità di memorizzazione nella cache, ogni volta che un utente desidera visualizzare un prodotto, l'applicazione deve richiedere i dati al database. Le informazioni sui prodotti potrebbero essere memorizzate nella cache un giorno alla volta, garantendo così tempi rapidi di risposta in quanto le informazioni sul prodotto sono già presenti in memoria. Tuttavia, se le informazioni sul prodotto vengono modificate, quelle memorizzate nella cache potrebbero non essere sincronizzate con i dati per un massimo di un giorno intero.
Se si utilizza la dipendenza dalla cache di SQL, è possibile memorizzare nella cache le informazioni sui prodotti e creare una dipendenza da un cambiamento di riga o di tabella del database. Solo quando i dati vengono modificati, gli elementi della cache basati su quegli stessi dati verranno invalidati e rimossi dalla cache. Alla richiesta successiva di quell'elemento dalla cache, se non è presente, sarà possibile aggiungere nuovamente nella cache la versione aggiornata e avere così la certezza di disporre di dati aggiornati.
La dipendenza dalla cache di SQL è disponibile anche per la cache di output della pagina. Ad esempio, è possibile creare una pagina denominata ViewProduct.aspx sulla quale vengono visualizzate informazioni relative a un determinato prodotto. I criteri della cache della pagina possono essere impostati in modo tale da renderla una dipendenza di SQL, come se si trattasse di un elemento aggiunto manualmente alla cache. La pagina verrebbe quindi memorizzata nella cache fino a quando la tabella o la riga da cui dipende viene modificata. La pagina viene creata e memorizzata nuovamente nella cache di output quando i dati vengono modificati.
Per ulteriori informazioni, vedere Cenni preliminari sull'inserimento nella cache in ASP.NET.
Funzionalità
Di seguito sono riportate le funzionalità della dipendenza dalla cache di SQL ASP.NET.
È possibile utilizzare la dipendenza dalla cache di SQL sia per la cache dell'applicazione sia per la cache di output della pagina.
È possibile utilizzare la dipendenza dalla cache di SQL con SQL Server 7.0 e versioni successive.
È possibile utilizzare la dipendenza dalla cache di SQL in un Web garden (più processori su un server) o su una Web farm (più server che eseguono la stessa applicazione).
Le operazioni del database associate a una dipendenza dalla cache di SQL sono semplici e, pertanto, non comportano costi di elaborazione onerosi sul server.
Per configurare la dipendenza dalla cache di SQL nell'applicazione e in SQL Server non è necessario conoscere SQL in modo approfondito. In ASP.NET sono inclusi strumenti per l'automatizzazione di questa configurazione. Inoltre, è possibile utilizzare la classe SqlCacheDependencyAdmin per configurare la dipendenza dalla cache si SQL a livello di codice.
Implementazione di SQL Server 7.0 e SQL Server 2000
ASP.NET implementa un modello di polling per la dipendenza dalla cache di SQL Server 7.0 e SQL Server 2000. Un thread all'interno del processo ASP.NET esegue il polling del database SQL Server in un intervallo di tempo specifico per determinare l'eventuale modifica dei dati. In caso affermativo, gli elementi della cache con dipendenza sono invalidati e rimossi dalla cache. È possibile specificare l'intervallo di polling nell'applicazione in modo dichiarativo nel file Web.config oppure a livello di codice utilizzando la classe SqlCacheDependency.
La dipendenza dalla cache di SQL è limitata alle modifiche di dati a livello di tabella per SQL Server 7.0 e SQL Server 2000. È possibile configurare ASP.NET in modo da eseguire il polling del database a fronte di modifiche in una tabella ma non in una riga specifica.
Attivazione della funzione di memorizzazione nella cache di SQL
Per poter utilizzare la dipendenza dalla cache di SQL in SQL Server 7.0 e SQL Server 2000, è necessario configurare SQL Server in modo che supporti tale funzionalità. ASP.NET fornisce utilità di configurazione dell'inserimento nella cache di SQL su SQL Server, compreso uno strumento denominato Aspnet_regsql.exe e la classe SqlCacheDependencyAdmin. Per ulteriori informazioni sull'attivazione della dipendenza dalla cache di SQL con SQL Server, vedere Procedura: memorizzare nella cache l'output di pagine con dipendenze di chiavi di cache.
Implementazione di SQL Server 2005
Rispetto a SQL Server 7.0 e SQL Server 2000, SQL Server 2005 implementa un diverso modello di dipendenza dalla cache. Per attivare la dipendenza dalla cache di SQL su SQL Server 2005 non è necessario eseguire alcuna procedura di configurazione particolare. Inoltre, SQL Server 2005 implementa un modello di notifica delle modifiche in base al quale le notifiche vengono inviate ai server dell'applicazione di sottoscrizione, anziché basarsi sul modello di polling richiesto nelle precedenti versioni di SQL Server.
La dipendenza dalla cache di SQL Server 2005 è più flessibile nei tipi di modifiche per cui sono inviate le notifiche. SQL Server 2005 esegue il monitoraggio delle modifiche sul gruppo di risultati di un particolare comando SQL. Se nel database si verifica un cambiamento che potrebbe modificare il gruppo di risultati di quel comando, la dipendenza indurrà l'invalidazione dell'elemento memorizzato nella cache. Ciò consente a SQL Server 2005 di fornire notifiche a livello di riga.
Esistono alcuni requisiti relativi alla query utilizzata per la verifica delle modifiche. È necessario fornire i nomi delle tabelle completi, compreso il nome del proprietario (ad esempio, dbo.authors). In genere, le notifiche di SQL 2005 supportano query Select e stored procedure, nonché query multiple e query nidificate, ma non supportano le operazioni di aggregazione quali, ad esempio, COUNT(*). Per ulteriori informazioni sulle query supportate e sulle regole di notifica in SQL Server 2005, vedere l'argomento della documentazione in linea di SQL relativo alla creazione di una query per le notifiche.
Configurazione dell'inserimento nella cache di SQL nell'applicazione ASP.NET
Dopo aver configurato SQL Server 7.0 o SQL Server 2000 per le dipendenze dalla cache o dopo aver creato la dipendenza dal comando appropriata in SQL Server 2005, è possibile configurare l'applicazione in modo che utilizzi la dipendenza dalla cache di SQL nello stesso modo in cui si configurerebbe qualsiasi altra dipendenza dalla cache. Ad esempio, è possibile creare un profilo della cache nel file Web.config, quindi aggiungere un riferimento a tale profilo della cache su ciascuna pagina che può dover utilizzare la dipendenza dalla cache di SQL. È anche possibile utilizzare la dipendenza dalla cache di SQL attivandola a livello di codice, utilizzando la classe SqlCacheDependency. Per ulteriori informazioni, vedere Procedura: memorizzare nella cache l'output di pagine con dipendenze di chiavi di cache.
Vedere anche
Attività
Procedura: memorizzare nella cache l'output di pagine con dipendenze dei file