Procedura dettagliata: utilizzo della memorizzazione nella cache di output di ASP.NET con SQL Server

Aggiornamento: novembre 2007

In questa procedura dettagliata viene illustrato come memorizzare nella cache le pagine ASP.NET che dipendono dai dati in un database di SQL Server.

Una funzionalità avanzata della memorizzazione nella cache di output di ASP.NET è rappresentata dalla dipendenza della cache di SQL. Tale funzionalità consente di memorizzare nella cache le pagine che dipendono dai dati delle tabelle di SQL Server. È possibile configurare SQL Server e ASP.NET in modo da memorizzare nella cache le richieste delle pagine, riducendo quindi il carico di lavoro del server, purché i dati da cui dipende la pagina siano stati aggiornati in SQL Server. La dipendenza della cache di SQL è utile per dati quali i cataloghi di prodotti o le informazioni di registrazione dei clienti che restano piuttosto statici.

Di seguito sono elencate le attività illustrate nella procedura dettagliata:

  • Creazione e configurazione di una pagina di visualizzazione dei dati del database Northwind.

  • Attivazione della notifica della cache di SQL per un database.

  • Specifica della dipendenza della cache SQL nella pagina e nel file Web.config in uso.

  • Modifiche al database Northwind e visualizzazione del comportamento della memorizzazione nella cache.

Prerequisiti

Per completare questa procedura dettagliata è necessario:

  • Accesso a SQL Server 2000 oppure SQL Server 2005 con il database Northwind.

  • Un nome utente e una password per un account SQL Server che dispone dell'accesso al database Northwind, nel caso in cui SQL Server non sia installato nello stesso computer nel quale è installato il server Web.

    Nota:

    Per ulteriori informazioni sulle modalità di accesso a SQL Server, contattare l'amministratore del server.

  • Microsoft Data Access Components (MDAC) 2.7 o versione successiva.

    Se si utilizza Windows XP o Windows Server 2003, si dispone già di MDAC 2.7. Tuttavia, se si utilizza Windows 2000, potrebbe essere necessario aggiornare la versione di MDAC già installata nel computer. Per ulteriori informazioni vedere l'articolo di MSDN Installazione di MDAC.

  • .NET Framework versione 2.0.

Creazione del sito Web

Se è già stato creato un sito Web in Visual Web Developer (vedere Procedura dettagliata: creazione di una pagina Web di base in Visual Web Developer), è possibile utilizzare quel sito Web e passare all'argomento "Attivazione della notifica della cache per SQL Server", più avanti in questa procedura dettagliata. In caso contrario, creare un sito e una pagina Web nuovi attenendosi alla procedura riportata di seguito.

Per creare un sito Web di file system

  1. Aprire Visual Web Developer.

  2. Scegliere Nuovosito Web dal menu File. In Visual Web Developer Express Edition, scegliere Nuovo, dal menu File, quindi fare clic su Sito Web.

    Viene visualizzata la finestra di dialogo Nuovo sito Web.

  3. In Modelli Visual Studio installati fare clic su Sito Web ASP.NET.

  4. Nella casella Percorso, immettere il nome della cartella in cui salvare le pagine del sito Web.

    Ad esempio, digitare il nome di cartella C:\WebSites.

  5. Nell'elenco Linguaggio scegliere il linguaggio di programmazione con lui lavorare.

  6. Scegliere OK.

    In Visual Web Developer vengono create la cartella e una nuova pagina denominata Default.aspx.

Attivazione della notifica della cache per SQL Server

È necessario configurare SQL Server in modo da fornire ad ASP.NET la notifica corretta relativamente alle modifiche apportate nei dati dipendenti. Per configurare il server è necessario disporre dei privilegi di amministratore.

Per attivare la notifica della cache per SQL Server

  1. Dal menu Start di Windows, scegliere Tutti i programmi, quindi Accessori e fare clic su Prompt dei comandi per aprire una finestra del prompt dei comandi.

  2. Individuare il file eseguibile Aspnet_regsql.exe sull'unità disco in uso. Questo file viene installato con .NET Framework versione 2.0 nel seguente percorso:

    %windir%\Microsoft.NET\Framework\FrameworkVersion
    

    Accertarsi che %windir% rappresenti la directory di Windows in uso e che la versione di .NET Framework sia 2.0 o successiva. Il percorso può essere simile al seguente:

    C:\WINDOWS\Microsoft.NET\Framework\v2.0.40217
    
  3. Utilizzare il seguente comando per attivare la notifica della cache per la tabella Employees nel database Northwind:

    aspnet_regsql.exe -S <Server> -U <Username> -P <Password> -ed -d Northwind -et -t Employees
    
    Nota:

    Saranno necessari privilegi di amministratore oppure l'account e la password di amministratore. Se non si dispone di queste informazioni, contattare l'amministratore del database.

    Verrà visualizzato un messaggio indicante l'esito positivo o negativo dell'attivazione del database. Il messaggio riportato di seguito indica l'esito positivo:

    Enabling the table for SQL cache dependency.
    ..
    Finished.
    

Aggiunta di una connessione dati al progetto

Per utilizzare il database SQL Server in Visual Web Developer, è necessario aggiungere una connessione al database Northwind.

Per aggiungere un'origine dati al progetto

  1. In Esplora server (Esplora database in Visual Web Developer Express Edition), fare clic con il pulsante destro del mouse su Connessioni dati e scegliere Aggiungi connessione.

    Nota:

    Esplora server (Esplora database in Visual Web Developer Express Edition) in genere è ancorato a Esplora soluzioni.

    Se Esplora server (Esplora database in Visual Web Developer Express Edition) non è visibile, scegliere Esplora server dal menu Visualizza (Esplora database in Visual Web Developer Express Edition).

  2. Se viene visualizzata la finestra di dialogo Scegli origine dati, effettuare le seguenti operazioni.

    1. Nell'elenco Origine dati fare clic su Microsoft SQL Server.

    2. Nell'elenco Provider di dati, fare clic su Provider di dati .NET Framework per SQL Server.

    3. Scegliere Continua.

  3. Nella finestra di dialogo Aggiungi connessione, fornire i dettagli (nome server, credenziali di accesso e via di seguito) per il database e selezionare il database Northwind.

  4. Scegliere OK.

Aggiunta di un indicatore di data e ora alla pagina Web

È ora possibile creare una pagina Web per illustrare la memorizzazione nella cache. In questa sezione verrà aggiunto un indicatore di data e ora per tenere traccia dei tempi di creazione delle pagine e un controllo GridView per visualizzare la tabella Employees del database Northwind.

Per aggiungere un indicatore di data e ora alla pagina Web

  1. Passare alla pagina Default.aspx oppure aprirla.

  2. Passare alla visualizzazione Progettazione.

  3. Dal gruppo Standard nella Casella degli strumenti, trascinare un controllo Label nella pagina, lasciando il nome predefinito Label1.

  4. In Esplora server (Esplora database in Visual Web Developer Express Edition), espandere Connessioni dati.

  5. Espandere il nodo della connessione dati creata in precedenza.

  6. Espandere il nodo Tabelle.

  7. Trascinare la tabella Employees nella pagina in uso.

    Mediante Visual Web Designer viene creato un controllo GridView configurato per l'utilizzo della connessione e della tabella selezionate.

  8. Dal menu Attività GridView, scegliere Configura origine dati.

    Nel primo passaggio della procedura guidata Configura origine dati viene visualizzato il nome predefinito della stringa di connessione dati NorthwindConnectionString1.

  9. Fare clic su Avanti.

  10. Nel riquadro Configura istruzione Select, selezionare Specificare le colonne di una tabella o vista.

  11. Nell'elenco Nome, fare clic su Employees.

  12. Nell'elenco Colonne, selezionare le colonne EmployeeID, LastName e FirstName.

  13. Fare clic su Avanti.

  14. Fare clic su Fine.

    Mediante Visual Web Designer viene configurato il controllo GridView per visualizzare i dati selezionati.

    Nota:

    Se viene visualizzato un messaggio in cui si richiede se si desidera aggiornare i campi e le chiavi del controllo GridView, fare clic su .

  15. Fare doppio clic su una parte vuota della pagina.

    Nella finestra di progettazione viene generato un metodo Page_Load e vengono visualizzate in modo alternato le diverse visualizzazioni.

  16. Aggiungere il codice evidenziato riportato di seguito per visualizzare un indicatore di data e ora indicante la creazione della pagina:

    Protected Sub Page_Load(ByVal sender As Object, _
            ByVal e As System.EventArgs) _
            Handles Me.Load
         Label1.Text = System.DateTime.Now
    End Sub
    
    protected void Page_Load(Object sender, System.EventArgs e)
    {
         Label1.Text = System.DateTime.Now.ToString();
    }
    
  17. Salvare il file.

Esecuzione del test della pagina senza memorizzazione nella cache

È ora possibile eseguire la pagina e osservare il comportamento senza la memorizzazione nella cache. La pagina viene caricata e viene visualizzata l'ora corrente del server; quindi i dati vengono recuperati e collocati sulla pagina.

Per eseguire il test della pagina senza la memorizzazione nella cache

  1. Premere CTRL+F5 per eseguire la pagina.

  2. Aggiornare la pagina nel browser

    L'indicatore di data e ora cambia ogni volta che si aggiorna la pagina. La data resta invariata.

Configurazione della pagina Web per la memorizzazione nella cache

In questa parte della procedura dettagliata verrà configurata la pagina per la dipendenza della cache di SQL, in base alla tabella Employees del database Northwind.

Per configurare la pagina Web per la memorizzazione nella cache

  1. Passare alla visualizzazione Origine.

  2. Nella parte superiore della pagina, aggiungere la seguente direttiva per indicare la dipendenza:

    <%@ OutputCache Duration="3600" SqlDependency="Northwind:Employees" VaryByParam="none" %>
    

Mediante l'attributo VaryByParam viene indicato se in ASP.NET è necessario considerare i parametri di pagina (ad esempio la stringa di query o i valori inviati) durante la memorizzazione nella cache. Se l'attributo VaryByParam è impostato su none, non verrà considerato alcun parametro; a tutti gli utenti viene inviata la stessa pagina, indipendentemente dai parametri aggiuntivi forniti. Impostando l'attributo VaryByParam su * (asterisco), per ciascuna combinazione univoca di parametri di richiesta nella cache viene memorizzata una pagina univoca. Tuttavia, impostando l'attributo VaryByParam su * è possibile che vengano memorizzate nella cache molte versioni diverse della pagina. Pertanto, se si conoscono i parametri in base ai quali variare la memorizzazione nella cache, è consigliabile specificarli in modo esplicito nell'attributo VaryByParam. Per informazioni dettagliate, vedere Memorizzazione nella cache di più versioni di una pagina.

Impostazione della configurazione della memorizzazione nella cache nel file Web.config

Oltre alla dichiarazione OutputCache, nella pagina Web della sezione precedente è necessario specificare i dettagli della memorizzazione nella cache nel file Web.config.

Per creare e aggiornare il file Web.config

  1. Se nel sito Web è già presente un file Web.config, andare al passaggio 4.

  2. In Esplora soluzioni, fare clic con il pulsante destro del mouse sul nome del sito Web e scegliere Aggiungi nuovo elemento.

  3. Nella finestra di dialogo Aggiungi elemento, fare clic su File di configurazione Web, quindi su Aggiungi.

    Accertarsi di utilizzare il nome Web.config.

  4. Aggiungere al file Web.config il file XML riportato di seguito come figlio dell'elemento system.web.

    <!-- caching section group -->
    <caching>
      <sqlCacheDependency enabled = "true" pollTime = "1000" >
        <databases>
          <add name="Northwind" 
             connectionStringName="NorthwindConnectionString1"
             pollTime = "1000"
          />
        </databases>
      </sqlCacheDependency>
    </caching>
    
    Nota:

    Il nome NorthwindConnectionString1 per la stringa di connessione è stato stabilito in precedenza, al momento della creazione della connessione dati. Se la stringa di connessione in uso ha un nome diverso, sostituirlo.

    Nota:

    Per eseguire il polling del database è necessario che le credenziali account specificate nella stringa di connessione dispongano di privilegi sufficienti.

  5. Salvare e chiudere il file.

Esecuzione del test della pagina con memorizzazione nella cache

Se la memorizzazione nella cache è attivata, l'aggiornamento della pagina non aggiornerà l'indicatore di data e ora né genererà una query al database, in quanto la richiesta di pagina dalla cache sarà soddisfatta da ASP.NET.

Per eseguire il test della pagina con la memorizzazione nella cache

  • Premere CTRL+F5 per eseguire la pagina.

    L'indicatore di data e ora resta identico ogni volta che si aggiorna la pagina. La pagina viene recuperata dalla cache.

Modifica dei dati

È ora possibile modificare i dati nel database e osservare che la cache è invalidata e viene creata una nuova pagina.

Per modificare i dati:

  1. In Esplora server (Esplora dati in Visual Web Developer Express Edition), espandere il nodo Connessioni dati.

  2. Espandere la connessione creata in precedenza.

  3. Espandere il nodo Tabelle.

  4. Fare clic con il pulsante destro del mouse su Employees e scegliere Mostra dati tabella.

  5. Aggiornare il database modificando i campi della tabella di dati e accertandosi che si tratti dei campi visualizzati nella pagina Web in uso.

    In alternativa, è possibile utilizzare il riquadro SQL (se il riquadro SQL non è visibile, scegliere Riquadro dal menu Progettazione query e fare clic su SQL). Immettere un comando SQL direttamente e fare clic sul pulsante Esegui SQL nella barra degli strumenti Progettazione query. Ad esempio, eseguire il comando riportato di seguito:

    UPDATE dbo.Employees SET LastName = 'Doe' WHERE (EmployeeID = 5)
    

    Mediante questo comando il nome del dipendente 5 viene modificato in Doe.

  6. Chiudere la visualizzazione dei dati.

Esecuzione del test della dipendenza della cache di SQL

È ora possibile eseguire il test della pagina e osservare se i dati e l'indicatore di data e ora sono stati modificati.

Per eseguire il test della dipendenza della cache di SQL

  1. Premere CTRL+F5 per eseguire la pagina.

    L'indicatore di data e ora è stato modificato e sono visualizzati i nuovi dati.

  2. Premere CTRL+F5 per eseguire di nuovo la pagina.

    Questo indicatore di data e ora resta invariato, in quanto i dati non sono stati modificati e la pagina viene recuperata nuovamente dalla cache.

Passaggi successivi

È anche possibile memorizzare le pagine nella cache mediante altri parametri. Per informazioni, vedere Procedura dettagliata: utilizzo della memorizzazione nella cache dell'output per migliorare le prestazioni di un sito Web. Se non si dispone di una conoscenza approfondita dell'accesso ai dati, vedere Procedura dettagliata: accesso ai dati di base nelle pagine Web.

Vedere anche

Concetti

Inserimento nella cache in ASP.NET con la classe SqlCacheDependency

Riferimenti

DefaultHttpCachePolicy

OutputCacheSettingsSection