..
Dataene bufring er et nyttig verktøy for å forbedre ytelsen av programvare system. Ideen er å sette de mest brukte data i en svært kraftig enhet. Faktisk, selv om tidspunkt for tilgang til masselagringsenheter fortsetter å forbedre, for eksempel tilgang til data som ligger på en harddisk operasjon er fortsatt mye tregere enn tilgang til dem mens de er i minnet. Dermed gjør data tilgjengelig raskere bruk bidrar vesentlig til å forbedre ytelsen til våre applikasjoner.
I ASP.NET Cache er parallell til våre programmer og er tilgjengelig gjennom HttpContext og System.Web.UI.Page. Bruk den bufferen er svært lik det som var sett for Session objekt, som det er mulig å få tilgang til objekter i det via en indeksereren. I tillegg kan du også kontrollere varigheten av settet av objekter og koblinger mellom objekter i cache og det fysiske datakilde.
Den cache ledelsen i ASP.NET er veldig enkelt å se hvordan å gå videre med et eksempel. Anta at du har en GetData () metode som gjør en tilkobling til en database og returnerer en DataTable
beskyttet DataTable GetData ()
{
DataTable dt = null;
dt = new DataTable ();
strConnection String = "Connection string til DB";
DbProviderFactory f =
DbProviderFactories.GetFactory ("System.Data.SqlClient");
bruker (DbConnection conn = f.CreateConnection ())
{
conn.ConnectionString = strConnection;
conn.Open ();
F. CreateCommand DbCommand command = ();
command.CommandText = "Select * from TableName";
command.Connection = conn;
Command.ExecuteReader IDataReader leseren = ();
dt.Load (leser);
reader.Close ();
conn.Close ();
}
retur dt,
}
Vi har også en annen metode BindData () som kartlegger data returnert av GetData () til en DataList stede i en av våre web-skjema
BindData beskyttet DataTable ()
{
DataTable dt;
this.GetData dt = ();
this.DataList1.DataSource = dt;
this.DataBind ();
tilbake dt;
}
en annen metode som vi trenger for vårt eksempel er CreaTabella som returnerer strukturen i en tabell i henhold til en bestemt mønster
CreaTabella beskyttet DataTable (DataTable tableSchema)
{
DataTable table = new DataTable ();
foreach (DataColumn st tableSchema.Columns)
{
tabella.Columns.Add (dc.ColumnName,
dc.DataType);
}
tilbake bordet;
}
Metoder GetData () og BindData () kalles i Page_Load arrangementet som følger
beskyttet void Page_Load (objekt avsenderen, EventArgs e)
{
if (IsPostBack)
{
DataTable dt = BindData ();
DataTable elementiTabella this.CreaTabella = (dt);
Session ["elementiTabella"] = elementiTabella;
}
}
og deretter hver gang siden opprettes du kobler til databasen og laster dataene.
I en sammenheng der forespørsler kommer fra noen få klienter kan det være akseptabelt for søknader sized å møte kravene til tusenvis av kunder er dette ikke akseptabelt.
Faktisk operasjonene databasetilgang svært dyr gave i tid og bør minimaliseres.
På dette punktet kan vi gjøre noen beregninger av hva slags data som forvaltes av søknaden vår. Bare lurte på om du trenger å laste data hver gang hvis de ikke endrer ofte. Hvis dette behovet ikke er tilstede kan vi tenke på å lagre slike data på et medium som gir tilgang til de samme veldig fort og uten forbindelser til databasen (for eksempel datamaskinens interne minne). På denne måten programmet ville møte mange flere samtidige forespørsler fra kunder. Selvfølgelig, hvis data som behandles av søknaden vår vil endre seg svært ofte denne tilnærmingen ikke ville være passende.
Fremgangsmåten for å utføre bufring av data er:
På dette punktet har vi tenkt å endre metoder som vi har sett i første del av denne klassen til å håndtere data caching. Her er GetData ()-metoden modifisert
beskyttet DataTable GetData ()
{
DataTable dt = null;
dt = (DataTable) Cache ["TabellaInCache"];
if (dt == null)
{
dt = new DataTable ();
strConnection String = "Connection string til DB";
DbProviderFactory DbProviderFactories.GetFactory f = ("System.Data.SqlClient");
bruker (DbConnection conn = f.CreateConnection ())
{
conn.ConnectionString = strConnection;
conn.Open ();
F. CreateCommand DbCommand command = ();
command.CommandText = "Select * from TableName";
command.Connection = conn;
Command.ExecuteReader IDataReader leseren = ();
dt.Load (leser);
reader.Close ();
conn.Close ();
}
}
Cache ["TabellaInCache"] = dt;
tilbake dt;
}
I den nye metoden GetData () blir først sjekket eksistensen av tabellen i cache. Hvis tabellen ikke eksisterer if (dt == null) er det laget som ble gjort tidligere, men hvis det er en del av databasen tilkobling og data utvinning er fullstendig forbigått. I alle fall, før han returnerte til bordet den er lagret i cache (Cache ["TabellaInCache"] = dt;). Disse små endringer kan redusere kostnadene ved lasting av siden (hvis du allerede har opprettet en klar tid).
Åpenbart er denne leksjonen for å gjøre deg fornuftig potensialet for caching av data og å se på ulike måter å kontrollere cache, metodene tilgjengelig og forstå hvilke av dem kan være nyttig fra tid til annen inviterer jeg deg til å konsultere den offisielle Microsoft .
| |
ASP (Advanced)
Full kurs for å lage dynamiske nettsider. Starter fra 39 €. |
| |
ASP.NET (Course)
Full kurs for å bygge web-applikasjoner fra 49 €. |
| |
SQL og Database (Course)
Opprette og administrere relasjonsdatabaser. Starter fra 39 €. |