HOW TO: Implement basata su chiave dipendenze per il caching dei dati in ASP.NET utilizzando Visual C# .NET

Traduzione articoli Traduzione articoli
Identificativo articolo: 308147 - Visualizza i prodotti a cui si riferisce l?articolo.
Espandi tutto | Chiudi tutto

In questa pagina

Sommario

In questo articolo viene illustrato come implementare la memorizzazione nella cache i dati tramite clic sul pulsante dipendenze basati su chiave in un'applicazione di Microsoft ASP.NET. Nell'esempio presentato in questo articolo crea e inserisce un oggetto DataSet nella cache con una dipendenza impostare un altro elemento voce di cache facendo riferimento alla chiave. Per esempi di dati nella cache con dipendenze basato su file o di ora, vedere la sezione "Riferimenti" in questo articolo.

Requisiti

  • Microsoft Windows 2000 o Microsoft Windows XP
  • Microsoft Internet Information Services (IIS)
  • Microsoft .NET framework
  • Microsoft SQL Server

Creazione di un'applicazione Web ASP.NET

Utilizzare Microsoft Visual C# .NET per creare un Web di Microsoft ASP.NET applicazione denominata DataCacher:
  1. Aprire Microsoft Visual Studio NET..
  2. Scegliere Nuovo dal menu file , quindi progetto .
  3. Nella finestra di dialogo Nuovo progetto scegliere Progetti di Visual C# in Tipi progetto , quindi Applicazione Web ASP.NET in modelli .
  4. Nella casella percorso , Ŕ necessario digitare DataCacher come nome progetto sostituendo il nome WebApplication# predefinita nel percorso URL. Se si utilizza il server locale, Ŕ possibile lasciare il nome del server http://localhost, che imposta la posizione http://localhost/DataCacher.

Creare il Web Form

Nota : il codice incluso in questa sezione Ŕ illustrato in dettaglio nella sezione "Esecuzione il codice".

Per creare i dati nella cache di esempio:
  1. Consente di aggiungere un nuovo Web Form denominato DataCacheSample.aspx al progetto di in Visual Studio. NET:
    1. Fare clic con il pulsante destro del mouse sul nodo progetto in Solution Explorer.
    2. Fare clic su Aggiungi e quindi fare clic su Aggiungi nuovo Web Form .
    3. Nome il DataCacheSample.aspx di Web Form.
    4. Fare clic su Apri .
  2. Nella scheda per il Web Form in visualizzazione struttura l'IDE di Visual Studio. NET (ambiente di sviluppo integrato, Integrated Development environment), aggiungere un pulsante di Web Form alla pagina:
    1. Utilizzare un'operazione di trascinamento e rilascio per spostare un pulsante di Web Form nella pagina.
    2. Fare clic per selezionare il nuovo pulsante. Modificare la proprietÓ ID per CreateNewOrCached e quindi modificare la proprietÓ Text per Creare nuovo o cache .
  3. Aggiungere un secondo pulsante di Web Form:
    1. Utilizzare un'operazione di trascinamento e rilascio per spostare un altro Web Form pulsante nella pagina dalla casella degli strumenti.
    2. Fare clic per selezionare il nuovo pulsante. Modificare la proprietÓ ID per rimuovere e quindi modificare la proprietÓ Text per l'installazione .
  4. Aggiungere un'etichetta di Web Form:
    1. Utilizzare un'operazione di trascinamento e rilascio per spostare un'etichetta di Web Form nella pagina dalla casella degli strumenti.
    2. Fare clic per selezionare la nuova etichetta. Modificare la proprietÓ ID per CacheStatus e quindi deselezionare la proprietÓ Text .
  5. Utilizzare un'operazione di trascinamento e rilascio per spostare un controllo Web Form DataGrid nella pagina dalla casella degli strumenti. Per questo controllo, Ŕ necessario lasciare la proprietÓ ID impostata il valore predefinito di DataGrid1 nel riquadro proprietÓ.

Aggiunta del codice

Aggiungere il codice per inserire voci di cache, per rimuovere gli elementi della cache e per creare la dipendenza della cache:
  1. Clic con il pulsante destro del mouse sulla pagina aspx e quindi fare clic su Visualizza codice per aprire la pagina code-behind.
  2. Per questo esempio, assicurarsi che il System.Data.SqlClient , il System.Data e gli spazi dei nomi System.Web.Caching vengono aggiunti allo spazio dei nomi elencati nella pagina code-behind. Se si utilizza Visual Studio. NET per creare il Web Form, lo spazio dei nomi elencati nella pagina code-behind sarÓ simile al seguente:
    using System;
    using System.Collections;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Web;
    using System.Web.SessionState;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.HtmlControls;
    using System.Data.SqlClient;
    using System.Web.Caching;
    						
    Nota : si riceveranno avvisi se lo spazio dei nomi non Ŕ elencato, o se un elenco ridondante di uno spazio dei nomi Ŕ presente.
  3. Nella scheda visualizzazione struttura , fare doppio clic sul pulsante CreateNewOrCached per aprire l'evento CreateNewOrCached_Click nella pagina code-behind.
  4. Aggiungere il codice riportato di seguito all'evento CreateNewOrCached_Click :
    private void CreateNewOrCached_Click(object sender, System.EventArgs e) {
    	//Attempt to create a DataSet object from the cache entry with the key "CacheDataSetEmployees" 
    	object CacheDataSetEmployees = (DataSet)Cache.Get("CacheDataSetEmployees");
    	
            //Check to see if the object is null
    	if(CacheDataSetEmployees == null)
    	{
    	     //Set a value for the cache entry that will serve as the 
    	     //key for the dependency to be created on
    	     Cache["SqlPubsEmployees"] = "SomeValue";
    
    	     //Create the array of cache key item names
    	     string[] keys = new String[1];
    	     keys[0] = "SqlPubsEmployees";
    				
    	     DataSet ds = new DataSet();
    	     //Create the connection and pass in the ConnectionString
    	    SqlConnection MySqlConn = new SqlConnection("Server=kronicas17;Trusted_Connection=Yes;initial catalog=pubs");
    	     //Create the Data Adapter and pass in the command text and connection to use
    	     SqlDataAdapter MySda = new SqlDataAdapter("SELECT TOP 10 * FROM Employee", MySqlConn);
    	     //Populate the DataTable "Employees" in the DataSet
    	     MySda.Fill(ds,"Employee");
    	     //Set the DataGrid's DataSource to the "Employee" DataTable
    	     DataGrid1.DataSource = ds.Tables["Employee"];
    				
    	     //Create a dependency object referencing the array of cachekeys (keys)
    	     CacheDependency MyDependency = new CacheDependency(null, keys);
    	     //Insert the DataSet into Cache with a dependency on MyDependency
    	     Cache.Insert("CacheDataSetEmployees", ds, MyDependency);
    				MySqlConn.Close();
    				
    	     //Display the status of the DataSet/Cache Entry
    	     CacheStatus.Text = "New Version Created";
    	}
    	else
    	{
    	     //Display the status of the DataSet/Cache Entry
    	     CacheStatus.Text = "Cached Version Used";
    	     //Set the DataSource to the cached version of the DataSet
    	     DataGrid1.DataSource = CacheDataSetEmployees;
            }
            //Bind the DataGrid to the DataSource
    	DataGrid1.DataBind();
    }
    						
    Nota : potrebbe essere necessario modificare ConnectionString nel codice in questo passaggio funzioni correttamente con server SQL. Per il codice per il corretto funzionamento, Ŕ necessario che il database pubs di SQL Server Ŕ installato.
  5. Nella scheda visualizzazione struttura per la pagina DataCacheSample.aspx, fare doppio clic sul pulsante Rimuovi per aprire l'evento Remove_Click nella pagina code-behind.
  6. Aggiungere il codice riportato di seguito all'evento Remove_Click :
    private void Remove_Click(object sender, System.EventArgs e)
         {
    	//Remove the cache item listed in the cachekeys array (keys)
    	Cache.Remove("SqlPubsEmployees"); 	//Display the status of the cache item
    	CacheStatus.Text = "Cache Item Removed";
         }
    					
  7. Aggiungere l'elemento seguente nel file Web.config <system.web> di </system.web>:
    <identity impersonate=?true? />
    
  8. Dal menu file scegliere Salva tutto per salvare il Web Form e altri file di progetto associato.
  9. Scegliere Build per generare il progetto dal menu Genera nell'IDE di Visual Studio. NET.

Esecuzione del codice

  1. Per eseguire il codice, fare clic con il pulsante destro del mouse sulla pagina DataCacheSample.aspx in Esplora soluzioni, quindi scegliere Visualizza nel browser .
  2. Fare clic sul pulsante CreateNewOrCached ; l'etichetta CacheStatus dovrebbe visualizzare "Nuova versione creato" e il controllo DataGrid viene compilato.

    NOTES :
    • L'impostazione della Nuova versione creata per l'etichetta CacheStatus Ŕ il risultato della chiave di cache CacheDataSetEmployees fa non ancora riferimento una voce di cache valido quando si immette l'evento. In questo caso, il DataSet viene creato il controllo DataGrid Ŕ associato il DataSet e il DataSet viene immesso nella cache utilizzando la chiave della cache "CacheDataSetEmployees" .
    • Dal passaggio precedente si deve inoltre notato la creazione del nuovo oggetto CacheDependency denominato MyDependency . L'oggetto MyDependency Ŕ elencato come la dipendenza per l'articolo CacheDataSetEmployees quando viene aggiunto alla cache utilizzando il metodo di inserimento . ╚ importante tenere presente che, mentre in questo esempio viene illustrato basati su chiave dipendenze, Ŕ possibile utilizzare altri tipi di basato sulla dipendenza della cache criteri, ad esempio file o un timestamp, nonchÚ.
  3. Fare clic sul pulsante CreateNewOrCached nuovamente. Nell'etichetta di CacheStatus viene visualizzato "Versione memorizzata nella cache," che indica che il DataSet nella cache Ŕ stato utilizzato. ╚ possibile verificare che modificando uno dei record visualizzati nel database pubs utilizzando SQL Query Analyzer o un altro strumento si tratta di dati memorizzati nella cache. Dopo aver modificato il record, fare nuovamente clic sul pulsante CreateNewOrCached . Si noti che le modifiche apportate non vengono visualizzate. Fare clic su Rimuovi e quindi fare clic su CreateNewOrCached nuovamente per verificare le modifiche apportate al database.
  4. Fare clic sul pulsante Rimuovi . Nell'etichetta di CacheStatus viene visualizzato "Rimosso voce di cache". L'elemento della cache con la chiave "SqlPubsEmployees" viene rimossa con il metodo di Cache.Remove nell'evento Remove_Click . PoichÚ la matrice (che contiene il nome della chiave della cache dell'elemento rimosso) con MyDependency elencati quando Ŕ stato creato, l'elemento "CacheDataSetEmployees" viene rimosso perchÚ Ŕ stato creato utilizzando il metodo Inserisci e facendo riferimento MyDependency come relativo parametro di dipendenza.
  5. Fare clic sul pulsante CreateNewOrCached nuovamente. L'etichetta CacheStatus Visualizza il messaggio "Nuova versione creato", poichÚ il DataSet Ŕ stato creato basa sul fatto che non Ŕ pi¨ esistente nella cache quando Ŕ stato generato l'evento.
  6. Si noterÓ che il controllo di DataGrid viene visualizzato come contiene i dati anche dopo che l'elemento DataSet viene rimosso dalla cache. Questo Ŕ il risultato della proprietÓ EnableViewState viene impostata su true per impostazione predefinita. In questo modo lo stato del controllo devono essere gestiti e questo non Ŕ correlato alla modifica della voce della cache nel codice. Per una rappresentazione visiva dello stato del controllo di ogni fase, Ŕ possibile impostare EnableViewState su false .
Nota : in relazione a questo esempio, in una situazione reale, la matrice di chiavi di cache (la matrice di chiavi nel codice di esempio) potrebbe contenere chiavi di cache per le altre tabelle o altre cache gli elementi in modo che se uno di questi elementi per modificare, la voce della cache ( CacheDataSetEmployees in questo esempio) per l'articolo Ŕ stato creato con questa dipendenza dovrebbe essere rimosso dalla cache nonchÚ. Potrebbe essere quindi utilizzato secondo le necessitÓ utilizzando callback; per ulteriori informazioni sul callback, vedere la sezione "Riferimenti" in questo articolo.

Risoluzione dei problemi

  • I nomi chiave sono elencati nella matrice di chiavi della cache devono essere associati con voci di cache effettivo. Se non lo sono, l'elemento per il quale la dipendenza viene utilizzata non viene mantenuta correttamente nella cache. Un esempio di questo potrebbe essere se nella matrice di chiavi nel codice di esempio sono presenti un altro elemento di matrice e l'elemento Ŕ stato impostato un nome di chiave di cache non valido.
  • La matrice di chiavi di cache non ha alcun significato specifico quando esso viene utilizzato con un oggetto CacheDependency .
  • Se si inserisce un elemento nella cache con alcuna dipendenza o altri scadenza, il runtime controlla quando l'elemento viene rimosso dalla cache.

Riferimenti

Per ulteriori informazioni sull'utilizzo di CacheItemRemovedCallback delegato, vedere il seguente sito Web Microsoft:
Delegato CacheItemRemovedCallback
http://msdn2.microsoft.com/en-us/library/system.web.caching.cacheitemremovedcallback(vs.71).aspx
Nota : il delegato CacheItemRemovedCallback definisce un metodo di callback per notificare le applicazioni quando viene rimosso un elemento memorizzato nella cache dalla cache.

Per ulteriori informazioni sulla classe CacheDependency , vedere il seguente sito Web Microsoft:
Classe CacheDependency
http://msdn2.microsoft.com/en-us/library/system.web.caching.cachedependency(vs.71).aspx
Nota : la classe CacheDependency tiene traccia delle dipendenze della cache, che possono essere file, directory o chiavi per altri oggetti nella cache dell'applicazione.

Per ulteriori informazioni sulle opzioni di memorizzazione nella cache diverse disponibili per ASP.NET, vedere la seguente documentazione Microsoft .NET Framework SDK:
Aggiunta di elementi alla cache
http://msdn.microsoft.com/en-us/library/cc511535.aspx
Per ulteriori informazioni sulle opzioni di memorizzazione nella cache diverse disponibili per ASP.NET, fare clic sui numeri degli articoli della Microsoft Knowledge Base riportato di seguito:
305140Guida di orientamento per ASP.NET
307225INFORMAZIONI: ASP.NET Caching Overview

ProprietÓ

Identificativo articolo: 308147 - Ultima modifica: martedý 28 agosto 2007 - Revisione: 2.8
Le informazioni in questo articolo si applicano a:
  • Microsoft ASP.NET 1.1
  • Microsoft ASP.NET 1.0
  • Microsoft Visual C# .NET 2003 Standard Edition
  • Microsoft Visual C# .NET 2002 Standard Edition
Chiavi:á
kbmt kbcaching kbdatabase kbhowtomaster KB308147 KbMtit
Traduzione automatica articoli
Il presente articolo Ŕ stato tradotto tramite il software di traduzione automatica di Microsoft e non da una persona. Microsoft offre sia articoli tradotti da persone fisiche sia articoli tradotti automaticamente da un software, in modo da rendere disponibili tutti gli articoli presenti nella nostra Knowledge Base nella lingua madre dell?utente. Tuttavia, un articolo tradotto in modo automatico non Ŕ sempre perfetto. Potrebbe contenere errori di sintassi, di grammatica o di utilizzo dei vocaboli, pi¨ o meno allo stesso modo di come una persona straniera potrebbe commettere degli errori parlando una lingua che non Ŕ la sua. Microsoft non Ŕ responsabile di alcuna imprecisione, errore o danno cagionato da qualsiasi traduzione non corretta dei contenuti o dell?utilizzo degli stessi fatto dai propri clienti. Microsoft, inoltre, aggiorna frequentemente il software di traduzione automatica.
Clicca qui per visualizzare la versione originale in inglese dell?articolo: 308147
LE INFORMAZIONI CONTENUTE NELLA MICROSOFT KNOWLEDGE BASE SONO FORNITE SENZA GARANZIA DI ALCUN TIPO, IMPLICITA OD ESPLICITA, COMPRESA QUELLA RIGUARDO ALLA COMMERCIALIZZAZIONE E/O COMPATIBILITA' IN IMPIEGHI PARTICOLARI. L'UTENTE SI ASSUME L'INTERA RESPONSABILITA' PER L'UTILIZZO DI QUESTE INFORMAZIONI. IN NESSUN CASO MICROSOFT CORPORATION E I SUOI FORNITORI SI RENDONO RESPONSABILI PER DANNI DIRETTI, INDIRETTI O ACCIDENTALI CHE POSSANO PROVOCARE PERDITA DI DENARO O DI DATI, ANCHE SE MICROSOFT O I SUOI FORNITORI FOSSERO STATI AVVISATI. IL DOCUMENTO PUO' ESSERE COPIATO E DISTRIBUITO ALLE SEGUENTI CONDIZIONI: 1) IL TESTO DEVE ESSERE COPIATO INTEGRALMENTE E TUTTE LE PAGINE DEVONO ESSERE INCLUSE. 2) I PROGRAMMI SE PRESENTI, DEVONO ESSERE COPIATI SENZA MODIFICHE, 3) IL DOCUMENTO DEVE ESSERE DISTRIBUITO INTERAMENTE IN OGNI SUA PARTE. 4) IL DOCUMENTO NON PUO' ESSERE DISTRIBUITO A SCOPO DI LUCRO.

Invia suggerimenti

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com