Usando Objeto Cache para optimizar un Aplicacion Web, antes de desplegarla!

Fecha: 30/Abr/2005 (21/Abr/05)
Autor: Sergio Tarrillo - supersergioman@hotmail.com
Blog:
EXTREME/ASPNET

 


Introducción

Una vez que tenemos nuestra aplicación lista para desplegar y subirla al servidor, hay algunas acciones que mejoran el rendimiento de la aplicación en el servidor. Una de las formas de optimizar es hacer uso del Objeto Cache, pero como podemos usar la Cache?. La Cache la usamos para almacenar variables de aplicacion, o variables globales a la aplicación, que son usadas por tiempo determinado,ya que estas se almacena en la memoria del servidor, es decir, al inicio de nuestra aplicación recuperamos todos los alumnos y los llenamos en un DataSet. Este DataSet lo podemos colocar en la Cache y estara disponible para toda la aplicación, sin necesidad de volver a llamar a la base de datos para recuperar los datos, solo hacemos uso del Objeto Cache que esta en memoria. A continuación veremos un ejemplo con el cual detallaremos mas funcionalidades del Objeto Cache y como usarlo.

Usando el Objeto Cache

1. Crear Archivo Xml

Crearemos un archivo Xml, que nos servira para llenar nuestro dataSet, este archivo Xml lo utilizaremos como nuestra fuente de datos. Recuerden que Xml es CaseSentive, hay que tener mucho cuidado en llenar nuestro Xml, el cual tendra el siguiente formato:

<?xml version="1.0" encoding="utf-8" ?> 
<ROOT>
     <alumno>
         <nombre>Carlos Obando</nombre>
         <edad>21</edad>
         <promedio>13</promedio>
     </alumno>
     <alumno>
         <nombre>Roicer Tejedo</nombre>
         <edad>23</edad>
         <promedio>14</promedio>
     </alumno>
	    ..........
</ROOT>

Llenamos el Xml con unos 8 a mas alumnos no hay problema en el tamaño, pero que sea mayor de 6 para poder ver la utilidad del Objeto Cache.

2. Leyendo el Archivo Xml en DataSet, y poner este en Cache.

Primero debemos recuperar el archivo Xml para llenarlo en el dataSet posteriormete colocamos el DataSet en Cache. Para leer un archivo del servidor, usamos Server.MapPath, para obtener la ruta absoluta del archivo. El codigo siguiente lo hacemos en el Evento Load de la Pagina:


   Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs)...
   'Introducir aquí el código de usuario para inicializar la página

      'CARGANDO EL DATASET
      dsAlumno.ReadXml(Server.MapPath("Alumnos.xml"))

      If Not Page.IsPostBack Then
         Cache.Insert("dsAlu", dsAlumno, Nothing, _
               DateTime.Now.AddMinutes(2), Nothing)
         dgAlumno.DataSource = Cache("dsAlu")
         dgAlumno.DataBind()
      End If
      
   End Sub

El dataSet debe ser una variable publica.
Hay dos formas de colocar algun objeto en la Cache, la forma implicita y la explicita.

Implicita: Cache("Key") = Value

Explicita: Cache.Insert("Key", Value, Dependency, ....), esta es la forma que usamos en nuestro ejemplo. (ver mas detalles)

Tambien Colocamos codigo para la paginación, es algo parecido al anterior:


   Private Sub dgAlumno_PageIndexChanged(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridPageChangedEventArgs) Handles dgAlumno.PageIndexChanged
      'cambiando el numero de pagina
      dgAlumno.CurrentPageIndex = e.NewPageIndex

      'Verificando si la existe cache o ya se elimino
      If Cache("dsAlu") Is Nothing Then
         Cache.Insert("dsAlu", dsAlumno, Nothing, _
                DateTime.Now.AddMinutes(2), Nothing)
      End If

      dgAlumno.DataSource = Cache("dsAlu")
      dgAlumno.DataBind()

   End Sub

El parametro DateTime.Now.AddMinutes(2), es para decirle cuanto será la duración de vida de la variable en la aplicación, en este caso solo le damos dos minutos.

3. Contruyendo la pagina Web

Para poder ver los resultados solo necesitamos de un control que en este caso será un DataGrid, llamado dgAlumno, y el dataSet dsAlumno, que lo mencionamos anteriormente, en pantalla los resultados se deberian ver de la siguiente forma:

 

nombreedadpromedio
Carlos Obando2113
Roicer Tejedo2314
Juan Alonso2012
Javier Sanchez1917
Fabricio Rojas1911
< >

 

4. Comprobando la Cache

Para comprobar el uso de la cache, primero debemos tener la pagina donde agregamos todo, en el browser, sin cerrar la ventana del navegador cambiamos el archivo Xml, editando uno de los alumnos o agregando uno nuevo. Ahora regresamos al navegador y navegamos a travez del dataGrid, veremos que los cambios no se actualizan pero si esperamos unos minutos, podremos ver los cambios reflejados dentro del DataGrid.

5. Opciones del Metodo Cache.Insert()

Uno del paramtros del metodo es CacheDependency, este nos permite que cuando haya un cambio la cache se actualize, por ejemplo en nuestro ejemplo agregaremos una depencia al archivo Alumnos.xml de tal manera que cuando este cambie la cache se actualize, y no espero hasta que finalize, en nuestro caso que no espere los dos minutos para actualizar la cache.


 Cache.Insert("dsAlu", dsAlumno, New System.Web.Caching.CacheDependency(Server.MapPath("Alumnos.xml")), _
               DateTime.Now.AddMinutes(2), Nothing)

Cambiamos el metodo Insert, en el Load y el evento PageIndexChange de la grilla, por esta nueva linea, para agregar la depencia al archivo XMl. Para comprobar devemos ejecutar nuestro WebForm sobre el cual estamos trabajando, navegemos por el datagrid, ahora cambiar nuevamente el archivoXml(no olvidar guardar los cambios en el archivo, en el punto 4 tambien se debe hacer esto), y regresemos a la ejecucion del WebForm, veremos que ahora los datos han sido actualizados!

CONCLUSIONES


P.D.: Cualquier duda o comentario ahi dejo mi mail, no olviden calificar el articulo. Ah para el articulo, supongo que tienen conocimientos básicos de Aplicaciones ASP.NET, bytes!

 


ir al índice