Tutorial: Utilizar el almacenamiento en la caché de resultados de ASP.NET con SQL Server
Actualización: noviembre 2007
Este tutorial muestra cómo almacenar en caché páginas de ASP.NET que dependen de datos de una base de datos de SQL Server.
Una característica avanzada de almacenamiento en la caché de resultados de ASP.NET es la dependencia de la caché de SQL. La dependencia de la caché de SQL le permite almacenar páginas que dependen de datos de las tablas SQL Server. Puede configurar SQL Server y ASP.NET para almacenar solicitudes de páginas en la memoria caché, reduciendo la carga de trabajo del servidor, hasta que los datos de los que depende la página se hayan actualizado en SQL Server. La dependencia de la caché de SQL es práctica para datos como catálogos de productos o información de registro de clientes que es relativamente estática.
Las tareas ilustradas en este tutorial incluyen:
Crear y configurar una página para que muestre datos de la base de datos Northwind.
Habilitar una base de datos para notificación de almacenamiento en caché de SQL.
Especificar la dependencia de la caché de SQL en su página y en el archivo Web.config.
Realizar cambios a la base de datos Northwind y ver el comportamiento del almacenamiento en la memoria caché.
Requisitos previos
Para poder completar este tutorial, necesitará:
Acceso a SQL Server 2000 o SQL Server 2005 con la base de datos Northwind.
Obtener acceso a la base de datos Northwind de SQL Server. Para obtener información sobre cómo descargar e instalar la base de datos de ejemplo Northwind de SQL Server, vea Installing Sample Databases en el sitio Web de Microsoft SQL Server.
Nota: Si necesita información sobre cómo iniciar sesión en el equipo en el que se ejecuta SQL Server, póngase en contacto con el administrador del servidor.
Microsoft Data Access Components (MDAC) versión 2.7 o posterior.
Si utiliza Windows XP o Windows Server 2003, ya tiene MDAC 2.7. Sin embargo, si utiliza Windows 2000, tal vez necesite actualizar la versión de MDAC instalada en su equipo. Para obtener más información, vea el artículo de MSDN MDAC Installation.
Versión 2.0 de .NET Framework
Crear el sitio Web
Si ya ha creado un sitio Web en Visual Web Developer (vea Tutorial: Crear una página Web básica en Visual Web Developer), puede utilizar ese sitio Web e ir a "Habilitar notificación de caché para SQL Server" más adelante en este tutorial. De lo contrario, cree un sitio y una página Web nuevos utilizando el siguiente procedimiento.
Para crear un sitio Web de sistema de archivos
Abra Visual Web Developer.
En el menú Archivo, haga clic en Nuevo y después en Sitio Web. (En Visual Web Developer, Express Edition, en el menú Archivo, haga clic en Nuevo y después en Sitio Web.)
Aparecerá el cuadro de diálogo Nuevo sitio Web.
En Plantillas instaladas de Visual Studio, haga clic en Sitio Web ASP.NET.
En el cuadro Ubicación, escriba el nombre de la carpeta en la que desea guardar las páginas de su sitio Web.
Por ejemplo, escriba el nombre de carpeta C:\WebSites.
En la lista Lenguaje, haga clic en el lenguaje de programación con el que desee trabajar.
Haga clic en Aceptar.
Visual Web Developer crea la carpeta y una nueva página denominada Default.aspx.
Habilitar notificación de caché para SQL Server
Debe configurar SQL Server para proporcionar una notificación adecuada a ASP.NET con relación a los cambios en datos independientes. Necesitará privilegios administrativos para configurar el servidor.
Para habilitar la notificación de caché para SQL Server
En el menú Inicio de Windows, seleccione Todos los programas, señale Accesorios y haga clic en Símbolo del sistema para abrir una ventana de símbolo del sistema.
Localice el archivo ejecutable Aspnet_regsql.exe en su unidad de disco. El archivo está instalado con la versión 2.0 de .NET Framework en la siguiente ubicación:
%windir%\Microsoft.NET\Framework\FrameworkVersion
Asegúrese de que %windir% representa su directorio de Windows y de que la versión de .NET Framework es la 2.0 o una posterior. La ruta de acceso podría tener el aspecto siguiente:
C:\WINDOWS\Microsoft.NET\Framework\v2.0.40217
Utilice el siguiente comando para habilitar la notificación de caché para la tabla Empleados en la base de datos Northwind:
aspnet_regsql.exe -S <Server> -U <Username> -P <Password> -ed -d Northwind -et -t Employees
Nota: Necesitará privilegios administrativos o la cuenta y contraseña administrativa. Si no dispone de esta información, póngase en contacto con el administrador de su base de datos.
Aparecerá un mensaje que indica si se pudo habilitar la base de datos. El siguiente mensaje indica que se pudo habilitar:
Enabling the table for SQL cache dependency. .. Finished.
Agregar una conexión de datos al proyecto
Para trabajar con la base de datos de SQL Server en Visual Web Developer, necesita agregar una conexión a la base de datos Northwind.
Para agregar un código fuente al proyecto
En el Explorador de servidores (Explorador de base de datos en Visual Web Developer Express Edition), haga clic con el botón secundario del mouse en Conexiones de datos y luego en Agregar conexión.
Nota: El Explorador de servidores (Explorador de base de datos en Visual Web Developer Express Edition) normalmente está acoplado detrás del Explorador de soluciones.
Si el Explorador de servidores (Explorador de base de datos en Visual Web Developer Express Edition) no está visible, en el menú Ver, haga clic en Explorador de servidores (Explorador de base de datos en Visual Web Developer Express Edition).
Si se muestra el cuadro de diálogo Elegir origen de datos, realice lo siguiente:
En la lista Origen de datos, haga clic en Microsoft SQL Server.
En la lista Proveedor de datos, haga clic en Proveedor de datos de .NET Framework para servidor SQL Server.
Haga clic en Continuar.
En el cuadro de diálogo Agregar conexión, proporcione los detalles (nombre de servidor, credenciales de inicio de sesión, etc.) para su base de datos y, a continuación, seleccione la base de datos Northwind.
Haga clic en Aceptar.
Agregar una marca de tiempo y fecha en la página Web
Ahora puede crear una página Web para demostrar el almacenamiento en caché. En esta sección agregará una marca de tiempo para dar seguimiento a las horas de la creación de páginas y un control GridView para ver la tabla de empleados de la base de datos Northwind.
Para agregar una marca de tiempo y una fecha a la página Web
Modifique o abra la página Default.aspx.
Cambie a la vista Diseño.
Desde el grupo Estándar del Cuadro de herramientas, arrastre un control Label a la página, dejando el nombre predeterminado de Label1.
En Explorador de servidores (Explorador de base de datos en Visual Web Developer Express Edition), expanda Conexiones de datos.
Expanda el nodo de la conexión de datos que creó con anterioridad.
Expanda el nodo Tablas.
Arrastre la tabla Empleados a su página.
Visual Web Designer crea un control GridView que está configurado para utilizar la conexión y la tabla que seleccionó.
En el menú Tareas de GridView, haga clic en Configurar origen de datos.
El nombre de la cadena de conexión de datos predeterminada NorthwindConnectionString1 aparece en el primer paso del asistente Configurar origen de datos.
Haga clic en Siguiente.
En el panel Configurar instrucción Select, seleccione Especificar columnas de una tabla o vista.
En la lista Nombre, haga clic en Empleados.
En la lista Columnas, seleccione las columnas EmployeeID, LastName y FirstName.
Haga clic en Siguiente.
Haga clic en Finalizar.
Visual Web Designer configura el control GridView para mostrar los datos que ha seleccionado.
Nota: Si se muestra un mensaje que le pregunta si desea actualizar los campos y las claves para el control GridView, haga clic en Sí.
Haga doble clic en un espacio en blanco de la página**.**
El diseñador genera un método Page_Load y cambia de vistas.
Agregue el siguiente código resaltado para mostrar una marca de tiempo que indique la creación de la página:
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(); }
Guarde el archivo.
Probar la página sin almacenarla en memoria caché
Ahora puede ejecutar la página y observar el comportamiento sin almacenarla en la caché. La página se carga y se muestra la hora actual del servidor, se obtienen los datos y se sitúan en la página.
Para probar la página sin almacenarla en caché
Presione CTRL+F5 para ejecutar la página.
Actualice la página en el explorador
Observe que la marca de tiempo cambia cada vez que actualice la página. Los datos permanecen iguales.
Configurar la página Web para almacenarla en caché
En esta parte del tutorial, configurará la página para dependencia de la caché de SQL basándose en la tabla Empleados de la base de datos Northwind.
Para configurar la página Web para almacenarla en caché
Cambie a la vista Código fuente.
En la parte superior de la página, agregue la siguiente directiva para indicar la dependencia:
<%@ OutputCache Duration="3600" SqlDependency="Northwind:Employees" VaryByParam="none" %>
El atributo VaryByParam indica si ASP.NET debería tener en cuenta los parámetros de página (como por ejemplo, la cadena de consulta o los valores contabilizados) al almacenar en la memoria caché. Cuando VaryByParam está establecido en none, no se tendrá en cuenta ningún parámetro; todos los usuarios recibirán la misma página independientemente de los parámetros adicionales que se proporcionen. Si establece VaryByParam en * (un asterisco) quiere decir que para cada combinación única de parámetros de solicitud, una página única se almacenará en la memoria caché. Sin embargo, si establece VaryByParam en * puede hacer que muchas versiones diferentes de la página se almacenen en la memoria, por lo que si conoce los parámetros que deben regir el almacenamiento en caché, se recomienda que los especifique explícitamente en el atributo VaryByParam. Para obtener información detallada, vea Almacenar en memoria caché varias versiones de una página.
Establecer configuración de la memoria caché en el archivo Web.config
Además de la declaración OutputCache en su página Web en la sección anterior, necesita especificar los detalles del almacenamiento en caché en el archivo Web.config.
Para crear y actualizar el archivo Web.config
Si su sitio Web ya tiene un archivo Web.config, vaya al paso 4.
En el Explorador de soluciones, haga clic con el botón secundario del mouse en el nombre del sitio Web y, a continuación, seleccione Agregar nuevo elemento.
En el cuadro de diálogo Agregar elemento, haga clic en Archivo de configuración Web y luego en Agregar.
Asegúrese de utilizar el nombre Web.config.
Agregue el siguiente código XML al archivo Web.config como elemento secundario del elemento system.web:
<!-- caching section group --> <caching> <sqlCacheDependency enabled = "true" pollTime = "1000" > <databases> <add name="Northwind" connectionStringName="NorthwindConnectionString1" pollTime = "1000" /> </databases> </sqlCacheDependency> </caching>
Nota: El nombre de la cadena de conexión NorthwindConnectionString1 lo estableció anteriormente, cuando creó la conexión de datos. Si su cadena de conexión tiene un nombre diferente, cambie ese nombre.
Nota: Las credenciales de la cuenta especificadas en la cadena de conexión deben tener suficientes privilegios para sondear la base de datos.
Guarde el archivo y ciérrelo.
Probar la página almacenándola en caché
Con el almacenamiento en caché habilitado, al actualizar la página ya no se actualizará la marca de tiempo o una solicitud de la base de datos, ya que ASP.NET cumplirá la solicitud de la página desde la memoria caché.
Para probar la página almacenándola en caché
Presione CTRL+F5 para ejecutar la página.
Observe que la marca de tiempo permanece igual cada vez que actualice la página. La página se obtiene de la memoria caché.
Cambiar los datos
Ahora puede cambiar los datos en la base de datos y ver que la memoria caché está invalidada y se crea una página nueva.
Para cambiar los datos
En el Explorador de servidores (Explorador de datos en Visual Web Developer Express Edition), expanda el nodo Conexiones de datos.
Expanda la conexión que ha creado antes.
Expanda el nodo Tablas.
Haga clic con el botón secundario del mouse en Empleados y después haga clic en Mostrar datos de tabla.
Actualice la base de datos editando los campos de la tabla de datos, pero asegúrese de que sea un campo que muestre su página Web.
O bien, puede utilizar el panel SQL (si el panel SQL no está visible, en el menú Diseñador de consultas, haga clic en Panel y luego en SQL). Escriba un comando SQL directamente y luego haga clic en el botón Ejecutar SQL en la barra de herramientas Diseñador de consultas. Por ejemplo, ejecute el siguiente comando:
UPDATE dbo.Employees SET LastName = 'Doe' WHERE (EmployeeID = 5)
Esto cambia el nombre del empleado 5 a Doe.
Cierre la vista de los datos.
Probar la dependencia de la caché de SQL
Ahora puede probar la página para ver si los datos y la marca de tiempo han cambiado.
Para probar la dependencia de la caché de SQL
Presione CTRL+F5 para ejecutar la página.
Observe que la marca de tiempo ha cambiado y que se muestran los nuevos datos.
Presione CTRL+F5 para volver a ejecutar la página.
Esta vez la marca de tiempo permanece invariable porque los datos no han cambiado y ahora la página se vuelve a recuperar de la caché.
Pasos siguientes
Asimismo, se pueden almacenar páginas en la memoria caché mediante otros parámetros. Para obtener más información, vea Tutorial: Usar el almacenamiento en la caché de resultados para mejorar el rendimiento de los sitios Web. Si no está familiarizado con el acceso a los datos, vea Tutorial: Acceso a datos básico en páginas Web.
Vea también
Conceptos
Almacenar en caché en ASP.NET con la clase SqlCacheDependency