..
Buforowanie danych jest użytecznym narzędziem dla poprawy funkcjonowania każdego systemu oprogramowania. Pomysł jest wprowadzenie często używanych danych w urządzeniu bardzo silny. W rzeczywistości, chociaż czas dostępu do pamięci masowe dalszej poprawy, na przykład dostęp do danych przechowywanych na dysku twardym jest nadal bardzo wolniejszy niż dostęp je, gdy są w pamięci. W ten sposób udostępnia dane szybciej używane znacząco przyczynia się do poprawy funkcjonowania naszych aplikacji.
W Cache ASP.NET jest równoległa do naszych aplikacji i jest dostępna za pośrednictwem HttpContext i System.Web.UI.Page. Użyj Cache jest bardzo podobny do tego, co widać na obiekcie Session, jak można uzyskać dostęp do obiektów do niego za pomocą indeksowania. Ponadto można również kontrolować czas trwania zestaw obiektów i połączeń między obiektami w pamięci podręcznej i fizycznego źródła danych.
Zarządzanie cache w ASP.NET jest bardzo proste, aby zobaczyć, jak postępować na przykładzie. Załóżmy, że masz GetData (), która sprawia, że połączenie z bazą danych i zwraca datatable
chronione DataTable GetData ()
{
DataTable dt = null;
dt = new DataTable ();
String strConnection = "string Połączenie DB";
DbProviderFactory f =
DbProviderFactories.GetFactory ("System.Data.SqlClient");
za pomocą (DbConnection conn f.CreateConnection = ())
{
conn.ConnectionString strConnection =;
conn.Open ();
DbCommand command = f.CreateCommand ();
command.CommandText = "* Wybierz TableName";
command.Connection = conn;
IDataReader czytelnik = Command.ExecuteReader ();
dt.Load (czytnika);
reader.Close ();
conn.Close ();
}
powrót dt;
}
Mamy też inny BindData metoda (), która kojarzy danych zwróconych przez GetData () do obecnego DataList w jednym z naszego formularza internetowego
BindData chronione DataTable ()
{
DataTable dt;
this.GetData dt = ();
this.DataList1.DataSource dt =;
this.DataBind ();
powrót dt;
}
Inną metodą, że musimy w naszym przykładzie jest CreaTabella, która zwraca strukturę tabeli zgodnie z określonym harmonogramem
CreaTabella chronione DataTable (DataTable tableSchema)
{
DataTable table = new DataTable ();
foreach (DataColumn dc tableSchema.Columns)
{
tabella.Columns.Add (dc.ColumnName,
dc.DataType);
}
powrót tabeli;
}
Metody GetData () i BindData () są wywoływane zdarzenia Page_Load w następujący sposób
protected void Page_Load (object sender, EventArgs e)
{
if (IsPostBack)
{
DataTable dt = BindData ();
DataTable elementiTabella this.CreaTabella = (dt);
Session ["elementiTabella"] = elementiTabella;
}
}
i następnie za każdym razem strona jest tworzona podłączyć do bazy danych i ładuje dane.
W sytuacji, gdy wniosek pochodzi z wewnątrz klienta, co może być do zaakceptowania dla aplikacji przedsiębiorstwa, aby sprostać wymaganiom tysięcy klientów nie jest to dopuszczalne.
W rzeczywistości operacje dostępu do bazy danych bardzo drogi prezent w czasie i powinna być zminimalizowana.
W tym momencie możemy dokonać pewnych szacunków charakter danych zarządzanych przez naszą aplikację. Po prostu zastanawiasz się, czy konieczne będzie ponowne załadowanie danych za każdym razem, jeśli nie często się zmieniają. Jeśli istnieje taka potrzeba możemy myśleć o przechowywanie tych danych na nośniku, który umożliwia dostęp do tych samych bardzo szybko i bez połączenia z bazą danych (np. pamięci komputera wewnętrzne). W ten sposób aplikacja będzie spełniać wiele więcej jednoczesnych żądań od klientów. Oczywiście, jeśli dane przetwarzane przez naszą aplikację będzie zmieniać się bardzo często takie podejście nie byłoby właściwe.
Kroki do buforowania danych są:
W tym momencie mamy zamiar zmienić metody, które widzieliśmy na początku tej lekcji zarządzania buforowanie danych. Oto GetData metoda () zmodyfikowane
chronione DataTable GetData ()
{
DataTable dt = null;
dt = (DataTable) Cache ["TabellaInCache"];
if (dt == null)
{
dt = new DataTable ();
String strConnection = "string Połączenie DB";
DbProviderFactory DbProviderFactories.GetFactory = f ("System.Data.SqlClient");
za pomocą (DbConnection conn f.CreateConnection = ())
{
conn.ConnectionString strConnection =;
conn.Open ();
DbCommand command = f.CreateCommand ();
command.CommandText = "* Wybierz TableName";
command.Connection = conn;
IDataReader czytelnik = Command.ExecuteReader ();
dt.Load (czytnika);
reader.Close ();
conn.Close ();
}
}
Cache ["TabellaInCache"] = dt;
powrót dt;
}
W nowym GetData metoda () jest po raz pierwszy sprawdzić istnienie tabeli w pamięci podręcznej. Jeśli tabela nie istnieje, jeśli (dt == null) stworzony jest tak jak to miało wcześniej, ale jeśli jest częścią połączenia z bazą danych i ekstrakcji danych jest całkowicie pominięte. W każdym przypadku, przed powrotem do tabeli jest ona przechowywana w pamięci podręcznej (Cache ["TabellaInCache"] = dt;). Te niewielkie zmiany mogą znacznie zmniejszyć koszty załadunku strony (jeśli masz już jasne czasu).
Oczywiście, tej lekcji jest, aby ci poczucie potencjał buforowanie danych i odkrywania różnych sposobów na zarządzanie cache, jego dostępnych metod i przekonać się, które mogą być przydatne od czasu do czasu zapraszam się skorzystać z oficjalnej Microsoft .
| |
ASP (Advanced)
Pełny kurs tworzenia dynamicznych stron internetowych. Od 39 €. |
| |
ASP.NET (Kurs)
Pełny kurs do tworzenia aplikacji WWW od 49 €. |
| |
SQL i bazy danych (pole)
Tworzenie i zarządzanie relacyjnymi bazami danych. Od 39 €. |