..
データのキャッシングは、どのようなソフトウェアシステムのパフォーマンスを向上させるための便利なツールです。 アイデアは非常に強力な装置で頻繁に使用されるデータを置くことです。 実際には、マスストレージデバイスへのアクセス時間は改善を続けるものの、例えば、ハードドライブ上に存在するデータへのアクセスは、まだそれらがメモリ内にある間、それらにアクセスするよりも非常に遅くなります。 したがって、より迅速に使用されるデータは、当社のアプリケーションのパフォーマンスを向上させるために大きく寄与できるようにします。
ASP.NETのキャッシュでは私たちのアプリケーションと平行になってし、HttpContextとにSystem.Web.UI.Pageから入手できます。 キャッシュを使用するインデクサーを経由してその中のオブジェクトへのアクセスを得ることができるように、Sessionオブジェクトのために認められたものと非常に似ています。 さらにまた、キャッシュと物理データソース内のオブジェクト間のオブジェクトとの接続のセットの持続時間を制御することができます。
ASP.NETのキャッシュ管理は、例を続行する方法を見て非常に簡単です。 あなたは、データベースへの接続を行うとデータテーブルを返すGetData()メソッドがあるとします。
保護されたDataTable GetData()の
{
DataTableにdtが= NULL;
DT =新しいDataTable();
strConnection文字列は="DBへの接続文字列";
DbProviderFactory F =
DbProviderFactories.GetFactory("System.Data.SqlClientを");
(はDbConnection CONN = f.CreateConnection())を使用して
{
conn.ConnectionString = strConnection;
conn.Open();
されたDbCommandコマンド= f.CreateCommand();
command.CommandTextは、"TableNameにから*を選択して"=;
command.Connection = CONN;
IDataReaderのリーダー= Command.ExecuteReader();
dt.Load(リーダー);
は、reader.Close();
conn.Close();
}
dtを返します。
}
我々はまた別の方法のBindData()を持っているに関連付ける、ウェブフォームのいずれかで、DataListコントロールに存在するのGetData()によって返されるデータ
BindData保護されたDataTableを()
{
DataTableのDT;
this.GetData DT =();
= dtをthis.DataList1.DataSource。
this.DataBind();
dtを返します。
}
我々は例のために必要とする別の方法では、特定のパターンに従ったテーブルの構造を返すCreaTabellaです。
CreaTabella保護されたDataTableに(DataTableのtableSchema)
{
DataTableにテーブル=新しいDataTable();
foreachの(DataColumnのDC tableSchema.Columns)
{
tabella.Columns.Add(dc.ColumnName、
dc.DataType);
}
テーブルを返します。
}
メソッドのGetDataメソッド()とBindData()は以下のように、Page_Loadイベントで呼び出されます
保護されたボイドをPage_Load(オブジェクト送信者、EventArgs e)
{
場合(IsPostBackプロパティ)
{
DataTableにdtが= BindData();
DataTableにelementiTabella this.CreaTabella =(DT);
セッション["elementiTabella"] = elementiTabella;
}
}
し、各時間は、ページは、データベースとリロードデータへの接続が作成されます。
要求が、これは許容できない数千のクライアントの要求を満たすためにサイズのアプリケーションのための許容される場合がありますどのようなクライアントの中から来る文脈で。
実際には、データベースのアクセス操作時に非常に高価な贈り物とは、最小限に抑える必要があります。
この時点で我々のアプリケーションによって管理されるデータの性質のいくつかの見積もりを行うことができます。 彼らは頻繁に変更しない場合、データを毎回リロードする必要がある場合だけ疑問。 そのような必要がある場合は我々は非常に速く、データベース(例えば、コンピュータの内部メモリ用)に接続することなく、同じへのアクセスを可能にするメディアにそのようなデータを保存すると考えることができます。 この方法では、アプリケーションはクライアントからのより多くの同時要求を満たすでしょう。 私たちのアプリケーションで処理されるデータは非常に頻繁に変わる場合には、明らかにこのアプローチは適切ではない。
データのキャッシングを行う手順は次のとおりです。
この時点で我々はデータのキャッシュを管理するためにこのレッスンの最初に見たの方法を変更しようとしている。 ここで修正されたメソッドGetData()です。
保護されたDataTable GetData()の
{
DataTableにdtが= NULL;
DT =(DataTableの)キャッシュ["TabellaInCache"];
(DT == nullの)場合
{
DT =新しいDataTable();
strConnection文字列は="DBへの接続文字列";
DbProviderFactory DbProviderFactories.GetFactory = F("System.Data.SqlClientを");
(はDbConnection CONN = f.CreateConnection())を使用して
{
conn.ConnectionString = strConnection;
conn.Open();
されたDbCommandコマンド= f.CreateCommand();
command.CommandTextは、"TableNameにから*を選択して"=;
command.Connection = CONN;
IDataReaderのリーダー= Command.ExecuteReader();
dt.Load(リーダー);
は、reader.Close();
conn.Close();
}
}
キャッシュ["TabellaInCache"] = DT;
dtを返します。
}
新しいメソッドGetData()の最初のキャッシュ内にテーブルの存在をチェックされます。 (DT == NULL)それ以前に行われていたとして作成しましたが、データベース接続とデータの一部がある場合の抽出は完全にバイパスされている場合、テーブルが存在しない場合。 (キャッシュ["TabellaInCache"] = DT;)いずれの場合でも、テーブルに戻る前にそれがキャッシュに格納されます。 これらの小さな変化が大幅にページを(既に明確な時間を作成している場合)ロードのコストを削減することができます。
明らかに、このレッスンでは、データのキャッシュの可能性を感知し、そのメソッドが利用できる、キャッシュの管理にさまざまな方法を模索し、どれが時々有用となる可能性もあります見やすくするためにである私は、マイクロソフトの公式を参照することを勧めます。
| |
ASP(上級)
動的なWebサイトを作成するためのフルコース。 39€から。 |
| |
ASP.NET(コース)
49€からWebアプリケーションを構築するためのフルコース。 |
| |
SQLとデータベース(コース)
リレーショナルデータベースを作成および管理。 39€から。 |