..
De data caching er et nyttigt værktøj for at forbedre resultatet af software system. Ideen er at sætte hyppigt anvendte data i en meget stærk enhed. I virkeligheden, selv om tidspunktet for adgang til lagerenheder fortsætte med at forbedre for eksempel adgang til data, der ligger på en harddisk er stadig en meget langsommere end at få adgang til dem, mens de er i hukommelsen. Således stiller de data hurtigere bruges bidrager væsentligt til at forbedre effektiviteten af vores applikationer.
I ASP.NET Cache er parallel med vores applikationer og er tilgængelig via HttpContext og System.Web.UI.Page. Brug Cache er meget lig hvad der blev set for sessionen objekt, som du kan få adgang til objekter i det via en indekseringen. Derudover kan du også kontrollere varigheden af det sæt af objekter og forbindelser mellem objekter i cachen og de fysiske data kilde.
Cachen ledelse i ASP.NET er meget enkel at se, hvordan vi kommer videre med et eksempel. Antag at du har en GetData () metode, der gør en forbindelse til en database og returnerer en DataTable
beskyttet DataTable GetData ()
{
DataTable dt = null;
dt = new DataTable ();
strConnection String = "Forbindelse string til DB";
DbProviderFactory f =
DbProviderFactories.GetFactory ("System.Data.SqlClient");
hjælp (DbConnection conn = f.CreateConnection ())
{
conn.ConnectionString = strConnection;
conn.Open ();
DbCommand kommando = f.CreateCommand ();
command.CommandText = "Select * from TableName";
command.Connection = forbind;
IDataReader læseren = Command.ExecuteReader ();
dt.Load (læser);
reader.Close ();
conn.Close ();
}
tilbage dt;
}
Vi har også en anden metode BindData (), der knytter de data, der returneres af GetData () til en DataList til stede i en af vores webformular
BindData beskyttet DataTable ()
{
DataTable dt;
this.GetData dt = ();
this.DataList1.DataSource = dt;
this.DataBind ();
tilbage dt;
}
En anden metode, som vi har brug for vores eksempel er CreaTabella der returnerer strukturen af en tabel efter en bestemt rytme
CreaTabella beskyttet DataTable (DataTable tableSchema)
{
DataTable tabel = new DataTable ();
foreach (DataColumn dc tableSchema.Columns)
{
tabella.Columns.Add (dc.ColumnName,
dc.DataType);
}
tilbage bordet;
}
Metoder GetData () og BindData () kaldes i Page_Load begivenheden som følger
protected void Page_Load (object sender, EventArgs e)
{
if (IsPostBack)
{
DataTable dt = BindData ();
DataTable elementiTabella this.CreaTabella = (dt);
Session ["elementiTabella"] = elementiTabella;
}
}
og derefter hver gang siden bliver oprettet du opretter forbindelse til database og genindlæser data.
I en situation, hvor anmodninger kommer indefra klienten, hvad der kunne være acceptabelt for ansøgninger dimensioneret til at opfylde kravene til tusindvis af kunder er dette ikke acceptabelt.
Faktisk bør databasen adgang operationer meget dyr gave i tid og blive minimeret.
På dette punkt kan vi gøre nogle skøn over arten af de data, der forvaltes af vores applikation. Bare gad vide hvis du har brug for at genindlæse data hver gang, hvis de ikke ændrer ofte. Hvis der er et sådant behov, vi kan tænke på at gemme sådanne data på et medium, der tillader adgang til de samme meget hurtigt og uden tilslutninger til databasen (for eksempel computerens interne hukommelse). På denne måde ansøgningen vil møde mange flere samtidige forespørgsler fra klienter. Selvfølgelig, hvis de data, der behandles af vores ansøgning ville ændre meget ofte denne tilgang ville ikke være passende.
De skridt til at gøre data caching er:
På dette punkt er vi vil ændre de metoder, som vi så i begyndelsen af denne lektion til håndtering af data caching. Her er metoden GetData () ændret
beskyttet DataTable GetData ()
{
DataTable dt = null;
dt = (DataTable) Cache ["TabellaInCache"];
if (dt == null)
{
dt = new DataTable ();
strConnection String = "Forbindelse string til DB";
DbProviderFactory DbProviderFactories.GetFactory = f ("System.Data.SqlClient");
hjælp (DbConnection conn = f.CreateConnection ())
{
conn.ConnectionString = strConnection;
conn.Open ();
DbCommand kommando = f.CreateCommand ();
command.CommandText = "Select * from TableName";
command.Connection = forbind;
IDataReader læseren = Command.ExecuteReader ();
dt.Load (læser);
reader.Close ();
conn.Close ();
}
}
Cache ["TabellaInCache"] = dt;
tilbage dt;
}
I den nye metode GetData () første er kontrolleret eksistensen af tabellen i cachen. Hvis tabellen ikke eksistere, hvis (dt == null) den er skabt som det var tilfældet tidligere, men hvis der er en del af databasen forbindelse og dataudtræk er helt forbigået. Under alle omstændigheder er det før han vendte tilbage til bordet er gemt i cachen (Cache ["TabellaInCache"] = dt;). Disse små ændringer kan reducere omkostningerne ved indlæsning af siden (hvis du allerede har oprettet en klar tid).
Det er klart, denne lektion er at gøre dig fornemmer potentialet i caching af data og til at udforske de forskellige måder at cache ledelse, dens metoder til rådighed, og se, hvilke der kan være nyttige fra tid til anden, jeg invitere dig til at konsultere den officielle Microsoft .
| |
ASP (Advanced)
Fuld kursus for at skabe dynamiske web-sites. Fra 39 €. |
| |
ASP.NET (Kursus)
Fuld kursus for bygge web-applikationer fra 49 €. |
| |
SQL-og Database (Kursus)
Oprette og administrere relationelle databaser. Fra 39 €. |