Cómo: Implementar basada en claves dependencias para datos de almacenamiento en caché en ASP.NET mediante Visual C# .NET

Seleccione idioma Seleccione idioma
Id. de artículo: 308147 - Ver los productos a los que se aplica este artículo
Expandir todo | Contraer todo

En esta página

Resumen

En este artículo muestra cómo implementar datos de caché mediante las dependencias de clave en una aplicación de Microsoft ASP.NET. El ejemplo se presenta en este artículo crea e inserta un objeto DataSet en la caché con una dependencia que se establezca en otro elemento de entrada de caché haciendo referencia a su clave. Para obtener ejemplos de almacenamiento en caché con el tiempo o dependencias basadas en archivo de datos, consulte la sección "Referencias" de este artículo.

Requisitos

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

Crear una aplicación Web ASP.NET

Utilizar Microsoft Visual C# .NET para crear un Web de Microsoft ASP.NET aplicación denominada DataCacher:
  1. Abra Microsoft Visual Studio .NET.
  2. En el menú archivo , seleccione nuevo y, a continuación, haga clic en proyecto .
  3. En el cuadro de diálogo Nuevo proyecto , haga clic en Proyectos de Visual C# en Tipos de proyecto y, a continuación, haga clic en Aplicación Web ASP.NET bajo plantillas .
  4. En el cuadro ubicación , escriba DataCacher como el nombre de proyecto reemplazando el nombre WebApplication# predeterminado en la ruta de acceso de la dirección URL. Si utiliza el servidor local, puede dejar el nombre del servidor como http://localhost, que establece la ubicación en http://localhost/DataCacher.

Generar el formulario Web

Nota : el código que se incluye en esta sección se explica con más detalle en la sección "Ejecutar el código".

Para crear los datos de almacenamiento en caché de ejemplo:
  1. Agregue un nuevo Web Form llamado DataCacheSample.aspx a su proyecto en Visual Studio. NET:
    1. Haga clic con el botón secundario del mouse en el nodo del proyecto en solución de explorador.
    2. Haga clic en Agregar y, a continuación, haga clic en Agregar formulario Web nuevo .
    3. Nombre DataCacheSample.aspx de formulario Web.
    4. Haga clic en Abrir .
  2. En la ficha Vista de Diseño para el formulario Web en el IDE de Visual Studio .NET (entorno de desarrollo integrado), agregue un botón de formularios Web Forms a la página:
    1. Utilice una operación de arrastrar y colocar para mover un botón de formularios Web Forms en la página.
    2. Haga clic para seleccionar el nuevo botón. Cambie la propiedad ID a CreateNewOrCached y a continuación, cambie la propiedad Text para Crear nuevo o caché .
  3. Agregue un segundo botón de formularios Web Forms:
    1. Utilice el botón de una operación de arrastrar y colocar para mover otro formulario Web hasta la página desde el cuadro de herramientas.
    2. Haga clic para seleccionar el nuevo botón. Cambie la propiedad ID para Quitar y, a continuación, cambie la propiedad Text para Quitar .
  4. Agregue una etiqueta de formulario Web:
    1. Utilice una operación de arrastrar y colocar para mover una etiqueta de formulario Web hasta la página desde el cuadro de herramientas.
    2. Haga clic para seleccionar la nueva etiqueta. Cambie la propiedad ID para CacheStatus y, a continuación, desactive la propiedad Text .
  5. Utilice una operación de arrastrar y colocar para mover un control de formularios Web Forms DataGrid hasta la página desde el cuadro de herramientas. Para este control, deje la propiedad ID establece el valor predeterminado de DataGrid1 en el panel de propiedades.

Agregar el código

Agregue el código para insertar elementos de caché, para quitar elementos de la caché y para generar la dependencia de caché:
  1. Haga clic con el botón secundario del mouse en la página .aspx y, a continuación, haga clic en Ver código para abrir la página code-behind.
  2. Para este ejemplo, asegúrese de que el System.Data.SqlClient , el System.Data y los espacios de nombres System.Web.Caching se agregan al espacio de nombres listado en la página de código subyacente. Si utiliza Visual Studio. NET para crear el Web Form, el espacio de nombres en el código - detrás de la página de lista será similar al siguiente:
    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 : se recibirá advertencias si no aparece el espacio de nombres o si una lista redundante de existe un espacio de nombres.
  3. En la ficha de vista de Diseño , haga doble clic en el botón CreateNewOrCached para abrir el evento CreateNewOrCached_Click en la página de código subyacente.
  4. Agregue el código siguiente al 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 : puede que necesite modificar ConnectionString en el código en este paso para trabajar correctamente con su servidor SQL server. Para que el código funcione correctamente, debe tener la base de datos pubs de SQL Server instalada.
  5. En la ficha Vista de Diseño de la página DataCacheSample.aspx, haga doble clic en el botón Quitar para abrir el evento Remove_Click en la página de código subyacente.
  6. Agregue el código siguiente al 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. Agregue el elemento siguiente al archivo Web.config <system.web> entre </system.web>:
    <identity impersonate=?true? />
    
  8. En el menú archivo , haga clic en Guardar todo para guardar el formulario Web Forms y los otros archivos de proyecto asociado.
  9. En el menú Generar en el IDE de Visual Studio. NET, haga clic en Generar para generar el proyecto.

Ejecutar el código

  1. Para ejecutar el código, haga clic con el botón secundario en la página DataCacheSample.aspx en el Explorador de soluciones y, a continuación, haga clic en Ver en el explorador .
  2. Haga clic en el botón CreateNewOrCached ; debe mostrar la etiqueta CacheStatus "Nueva versión creado" y se rellena el control DataGrid .

    notas :
    • La configuración de Creación de versión nuevo para la etiqueta CacheStatus es el resultado de la clave de caché CacheDataSetEmployees que hace referencia no todavía a un elemento de caché válido al especificar el evento. En este caso, se crea el DataSet , el control DataGrid está enlazado al DataSet y el DataSet está especificado en caché mediante la clave de caché "CacheDataSetEmployees" .
    • En el paso anterior debe haya observado también la creación del objeto CacheDependency nuevo denominado MyDependency . El objeto MyDependency aparece como la dependencia para el artículo CacheDataSetEmployees cuando se agrega a la caché mediante el método Insert . Es importante que recuerde que, mientras que este ejemplo muestra las dependencias de clave, puede utilizar otros tipos de basado en la dependencia de caché criterios, como archivos o una marca de tiempo.
  3. Vuelva a hacer clic en el botón CreateNewOrCached . La etiqueta CacheStatus muestra "Versión en caché", que indica que se utilizó el DataSet en caché. Puede comprobar que se trata los datos almacenados en memoria caché mediante la modificación de uno de los registros mostrados en la base de datos pubs mediante el Analizador de consultas SQL u otra herramienta. Después de modificar el registro, haga clic de nuevo en el botón CreateNewOrCached . Tenga en cuenta que no se muestran los cambios realizados. Haga clic en Quitar y, a continuación, haga clic en CreateNewOrCached nuevo para ver los cambios realizados en la base de datos.
  4. Haga clic en el botón Quitar . La etiqueta de CacheStatus muestra "Quitado de entrada de caché". El elemento de caché con la clave "SqlPubsEmployees" se quita mediante el método Cache.Remove en el evento Remove_Click . Porque aparece la matriz (que contiene el nombre de clave de caché del elemento eliminado) MyDependency cuando lo creó, se quita el elemento "CacheDataSetEmployees" dado que creó mediante el método Insert y hacer referencia a MyDependency como su parámetro de dependencia.
  5. Vuelva a hacer clic en el botón CreateNewOrCached . La etiqueta CacheStatus muestra el mensaje "Versión nuevo creado" porque se creó el conjunto de datos basa en el hecho de que ya no existía en caché cuando se desencadena el evento.
  6. También puede observar que el control de DataGrid se muestra como se rellena con datos incluso después de que se quita el elemento DataSet de caché. Éste es el resultado de la propiedad EnableViewState se establece en true de forma predeterminada. Esto permite que el estado del control que se mantenga y esto no está relacionado con la manipulación de entrada de caché en el código. Para una representación más visual del estado del control en cada fase, puede establecer EnableViewState en false .
Nota : en respecto a este ejemplo, en una situación real, la matriz de claves de caché (matriz de claves en el código de ejemplo) puede contener las claves de caché para otras tablas o caché de otro elementos, para que si alguno de esos elementos cambiar, la entrada de caché ( CacheDataSetEmployees en este ejemplo) para el elemento que se creó con esta dependencia podría quitarse de la caché así. Podría, a continuación, actuar como sea necesario mediante devoluciones de llamada; para obtener más información sobre las devoluciones de llamada, consulte la sección "Referencias" de este artículo.

Solución de problemas

  • Los nombres de claves que aparecen en la matriz de claves de caché deben estar asociados con elementos de caché real. Si no lo están, el elemento para que se utiliza la dependencia no se mantiene correctamente en la caché. Un ejemplo de esto sería si la matriz de claves en el código de ejemplo mantiene otro elemento de matriz y el elemento se ha establecido en un nombre de clave de caché no válida.
  • La matriz de claves de caché no tiene ningún significado específico hasta que se utiliza con un objeto CacheDependency .
  • Si inserta un elemento en la caché con ninguna dependencia o otro caducidad, el motor en tiempo de ejecución controla cuando el elemento se quitará de la caché.

Referencias

Para obtener más información sobre cómo utilizar el CacheItemRemovedCallback delegar, consulte el siguiente sitio Web de Microsoft:
Delegado CacheItemRemovedCallback
http://msdn2.microsoft.com/en-us/library/system.web.caching.cacheitemremovedcallback(vs.71).aspx
Nota : el delegado CacheItemRemovedCallback define un método de devolución de llamada para notificar a las aplicaciones cuando se quita un elemento en caché de la caché.

Para obtener más información acerca de la clase CacheDependency , consulte el siguiente sitio Web de Microsoft:
Clase CacheDependency
http://msdn2.microsoft.com/en-us/library/system.web.caching.cachedependency(vs.71).aspx
Nota : la clase CacheDependency realiza un seguimiento las dependencias de caché, que pueden ser archivos, directorios o claves de otros objetos en caché de la aplicación.

Para obtener más información acerca de las diversas opciones de almacenamiento en caché que están disponibles para ASP.NET, consulte la siguiente documentación de Microsoft .NET Framework SDK:
Agregar elementos a la caché
http://msdn.microsoft.com/en-us/library/cc511535.aspx
Para obtener información adicional acerca de las diversas opciones de almacenamiento en caché que están disponibles para ASP.NET, haga clic en los números de artículo siguientes para verlos en Microsoft Knowledge Base:
305140Guía básica de ASP.NET
307225INFORMACIÓN: ASP.NET Caching Overview

Propiedades

Id. de artículo: 308147 - Última revisión: martes, 28 de agosto de 2007 - Versión: 2.8
La información de este artículo se refiere 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
Palabras clave: 
kbmt kbcaching kbdatabase kbhowtomaster KB308147 KbMtes
Traducción automática
IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.
Haga clic aquí para ver el artículo original (en inglés): 308147

Enviar comentarios

 

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