..
El almacenamiento en caché de datos es una herramienta útil para mejorar el rendimiento de cualquier sistema de software. La idea es poner los datos de uso frecuente en un dispositivo muy potente. De hecho, aunque el tiempo de acceso a los dispositivos de almacenamiento masivo seguir mejorando, por ejemplo, el acceso a los datos que residen en el disco duro es todavía muy lento que acceder a ellos mientras están en la memoria. De este modo poner a disposición los datos más rápidamente utilizado contribuye significativamente a mejorar el rendimiento de nuestras aplicaciones.
En la caché de ASP.NET es paralela a nuestras aplicaciones, y está disponible a través de HttpContext y System.Web.UI.Page. El uso de la caché es muy similar a lo que fue visto por el objeto Session, que se puede obtener acceso a los objetos en ella a través de un indizador. Además también se puede controlar la duración del conjunto de objetos y las conexiones entre los objetos en la caché y la fuente de datos físicos.
La gestión de la caché en ASP.NET es muy simple para ver cómo proceder con un ejemplo. Suponga que tiene un GetData () que realiza una conexión a una base de datos y devuelve una tabla de datos
protegidos DataTable GetData ()
{
DataTable dt = null;
dt = new DataTable ();
Cadena strConnection = "Cadena de conexión a la base de datos";
DbProviderFactory f =
DbProviderFactories.GetFactory ("System.Data.SqlClient");
utilizando (DbConnection CONN f.CreateConnection = ())
{
conn.ConnectionString strConnection =;
conn.Open ();
DbCommand comando = f.CreateCommand ();
command.CommandText = "Select * from TableName";
command.Connection = conn;
IDataReader lector Command.ExecuteReader = ();
dt.Load (lector);
reader.Close ();
conn.Close ();
}
volver dt;
}
También tenemos otro método BindData () que asocia los datos devueltos por GetData () a un presente DataList en uno de nuestro formulario web
BindData protegidos DataTable ()
{
DataTable dt;
this.GetData dt = ();
this.DataList1.DataSource dt =;
this.DataBind ();
volver dt;
}
Otro método que necesitamos para nuestro ejemplo es CreaTabella que devuelve la estructura de una tabla de acuerdo a un patrón determinado
CreaTabella protegidos DataTable (DataTable tableSchema)
{
DataTable tabla = new DataTable ();
foreach (DataColumn tableSchema.Columns dc)
{
tabella.Columns.Add (dc.ColumnName,
dc.DataType);
}
retorno de mesa;
}
Métodos GetData () y BindData () se llama en el evento Page_Load de la siguiente manera
protected void Page_Load (object sender, EventArgs e)
{
if (IsPostBack)
{
DataTable dt = BindData ();
DataTable elementiTabella this.CreaTabella = (dt);
Session ["elementiTabella"] = elementiTabella;
}
}
y cada vez que se crea la página que se conecte a la base de datos y vuelve a cargar los datos.
En un contexto donde llegan solicitudes desde el cliente de lo que podría ser aceptable para aplicaciones de tamaño para satisfacer las demandas de miles de clientes no es aceptable.
De hecho, las operaciones de acceso a la base de datos regalo muy costoso en tiempo y debe ser minimizado.
En este punto podemos hacer algunas estimaciones de la naturaleza de los datos gestionados por nuestra aplicación. Sólo me preguntaba si lo que necesita para cargar los datos cada vez que si no cambian a menudo. Si hay tal necesidad, podemos pensar en el almacenamiento de dichos datos en un medio que permite el acceso a los mismos muy rápido y sin conexiones a la base de datos (por ejemplo, la memoria interna del equipo). De esta manera, la aplicación se reunirá muchas peticiones más concurrentes de los clientes. Obviamente, si los datos procesados por nuestra aplicación que cambia muy a menudo este enfoque no sería apropiado.
Los pasos para el almacenamiento en caché de datos son los siguientes:
En este punto vamos a cambiar los métodos que vimos al principio de esta lección para la gestión de almacenamiento en caché de datos. Aquí está el método GetData () modificado
protegidos DataTable GetData ()
{
DataTable dt = null;
dt = (DataTable) Cache ["TabellaInCache"];
if (dt == null)
{
dt = new DataTable ();
Cadena strConnection = "Cadena de conexión a la base de datos";
DbProviderFactory DbProviderFactories.GetFactory = f ("System.Data.SqlClient");
utilizando (DbConnection CONN f.CreateConnection = ())
{
conn.ConnectionString strConnection =;
conn.Open ();
DbCommand comando = f.CreateCommand ();
command.CommandText = "Select * from TableName";
command.Connection = conn;
IDataReader lector Command.ExecuteReader = ();
dt.Load (lector);
reader.Close ();
conn.Close ();
}
}
Cache ["TabellaInCache"] = dt;
volver dt;
}
En el nuevo método GetData () primero se comprueba la existencia de la tabla en la caché. Si la tabla no existe si (dt == null) se crea como se hizo anteriormente, pero si hay una parte de la conexión de base de datos y extracción de datos es completamente ignorado. En cualquier caso, antes de regresar a la mesa que se almacena en la caché (Cache ["TabellaInCache"] dt =;). Estos pequeños cambios pueden reducir significativamente el costo de cargar la página (si ya ha creado un momento claro).
Es evidente que esta lección es hacer que usted siente el potencial de almacenamiento en caché de datos y para explorar las diferentes formas de gestión de la caché, sus métodos disponibles y ver cuáles podrían ser útiles de vez en cuando les invito a consultar el oficial de Microsoft .
| |
ASP (Advanced)
Ciclo completo para la creación de sitios Web dinámicos. A partir de 39 €. |
| |
ASP.NET (Curso)
Ciclo completo para la creación de aplicaciones Web y un 15% de descuento hasta el 14/09/2011. |
| |
SQL y bases de datos (Curso)
Crear y gestionar bases de datos relacionales. A partir de 39 €. |