..


Enllaços patrocinats

Memòria cau de dades

L'emmagatzematge en memòria cau de dades és una eina útil per millorar el rendiment de qualsevol sistema de programari. La idea és posar les dades d'ús freqüent en un dispositiu molt potent. De fet, encara que el temps d'accés als dispositius d'emmagatzematge massiu seguir millorant, per exemple, l'accés a les dades que resideixen en el disc dur és encara molt lent d'accedir-hi mentre són a la memòria. D'aquesta manera posar a disposició les dades més ràpidament utilitzat contribueix significativament a millorar el rendiment de les nostres aplicacions.

En la memòria cau de ASP.NET és paral.lela a les nostres aplicacions, i està disponible a través de HttpContext i System.Web.UI.Page. L'ús de la memòria cau és molt similar al que va ser vist per l'objecte Session, que es pot accedir als objectes en ella a través d'un indexats. A més també es pot controlar la durada del conjunt d'objectes i les connexions entre els objectes en la memòria cau i la font de dades físiques.

La gestió de la memòria cau en ASP.NET és molt simple per veure com procedir amb un exemple. Suposeu que té un GetData () que realitza una connexió a una base de dades i retorna una taula de dades






 protegits DataTable GetData ()







 {



  



 DataTable dt = null;



  



 dt = new DataTable ();



  



 Cadena strConnection = "Cadena de connexió a la base de dades";



  



 DbProviderFactory f =



  



 DbProviderFactories.GetFactory ("System.Data.SqlClient");



  



 utilitzant (DbConnection CONN f.CreateConnection = ())



  



 {



    



 conn.ConnectionString strConnection =;



    



 conn.Open ();



    



 DbCommand comanda = f.CreateCommand ();



    



 command.CommandText = "Select * from TableName";



    



 command.Connection = conn;



    



 IDataReader lector Command.ExecuteReader = ();



    



 dt.Load (lector);



    



 reader.Close ();



    



 conn.Close ();



  



 }



  



 tornar dt;







 }



També tenim un altre mètode BindData () que associa les dades retornats per GetData () a un present DataList en un del nostre formulari web






 BindData protegits DataTable ()







 {



  



 DataTable dt;



  



 this.GetData dt = ();



  



 this.DataList1.DataSource dt =;



  



 this.DataBind ();



  



 tornar dt;







 }



Un altre mètode que necessitem per al nostre exemple és CreaTabella que retorna l'estructura d'una taula d'acord a un patró determinat






 CreaTabella protegits DataTable (DataTable tableSchema)







 {



  



 DataTable taula = new DataTable ();



  



 foreach (DataColumn tableSchema.Columns dc)



  



 {



    



 tabella.Columns.Add (dc.ColumnName,



    



 dc.DataType);



  



 }



  



 retorn de taula;







 }



Mètodes GetData () i BindData () es diu en l'esdeveniment Page_Load de la següent manera






 protected void Page_Load (object sender, EventArgs e)







 {



  



 if (IsPostBack)



  



 {



    



 DataTable dt = BindData ();



    



 DataTable elementiTabella this.CreaTabella = (dt);



    



 Session ["elementiTabella"] = elementiTabella;



  



 }







 }



i cada vegada que es crea la pàgina que es connecti a la base de dades i torna a carregar les dades. En un context on arriben sol.licituds des del client del que podria ser acceptable per a aplicacions de mida per satisfer les demandes de milers de clients no és acceptable. De fet, les operacions d'accés a la base de dades regal molt costós en temps i ha de ser minimitzat.

En aquest punt podem fer algunes estimacions de la naturalesa de les dades gestionades per la nostra aplicació. Només em preguntava si el que necessita per carregar les dades cada vegada que si no canvien sovint. Si hi ha aquesta necessitat, podem pensar en l'emmagatzematge d'aquestes dades a un mitjà que permet l'accés als mateixos molt ràpid i sense connexions a la base de dades (per exemple, la memòria interna de l'equip). D'aquesta manera, l'aplicació es reunirà moltes peticions més concurrents dels clients. Òbviament, si les dades processades per la nostra aplicació que canvia molt sovint aquest enfocament no seria apropiat.

Els passos per l'emmagatzematge en memòria cau de dades són els següents:

  1. Comprovar si una dada donat és al cau
  2. Si no s'emmagatzema utilitzant
  3. Si no hi ha memòria cau per aconseguir que es connecti a la base de dades
  4. Emmagatzemar l'element carregat a la memòria cau per al seu ús futur

En aquest punt anem a canviar els mètodes que vam veure al principi de la lliçó per a la gestió d'emmagatzematge en memòria cau de dades. Aquí hi ha el mètode GetData () modificat






 protegits DataTable GetData ()







 {



  



 DataTable dt = null;

  

  



 dt = (DataTable) Cache ["TabellaInCache"];

  

  



 if (dt == null)



  



 {



    



 dt = new DataTable ();



    



 Cadena strConnection = "Cadena de connexió a la base de dades";



    



 DbProviderFactory DbProviderFactories.GetFactory = f ("System.Data.SqlClient");



    



 utilitzant (DbConnection CONN f.CreateConnection = ())



    



 {



      



 conn.ConnectionString strConnection =;



      



 conn.Open ();



      



 DbCommand comanda = f.CreateCommand ();



      



 command.CommandText = "Select * from TableName";



      



 command.Connection = conn;



      



 IDataReader lector Command.ExecuteReader = ();



      



 dt.Load (lector);



      



 reader.Close ();



      



 conn.Close ();



    



 }



  



 }



  



 Cache ["TabellaInCache"] = dt;



  



 tornar dt;







 }



En el nou mètode GetData () primer es comprova l'existència de la taula en la memòria cau. Si la taula no existeix si (dt == null) es crea com es va fer anteriorment, però si hi ha una part de la connexió de base de dades i extracció de dades és completament ignorat. En qualsevol cas, abans de tornar a la taula que s'emmagatzema en la memòria cau (Cache ["TabellaInCache"] dt =;). Aquests petits canvis poden reduir significativament el cost de carregar la pàgina (si ja ha creat un moment clar).

És evident que aquesta lliçó és fer que vostè sent el potencial d'emmagatzematge en memòria cau de dades i per explorar les diferents formes de gestió de la memòria cau, els seus mètodes disponibles i veure quines podrien ser útils de tant en tant els convido a consultar l'oficial de Microsoft .

Ajuda amb Visual Studio ASP.Net
E-Learning
ASP (Advanced) ASP (Advanced)
Cicle complet per a la creació de llocs web dinàmics. A partir de 39 €.
ASP.NET (Curs) ASP.NET (Curs)
Curs complet per construir aplicacions web a partir de 49 €.
SQL i bases de dades (Curs) SQL i bases de dades (Curs)
Crear i gestionar bases de dades relacionals. A partir de 39 €.
Enllaços patrocinats