Entity Framework は、.NET 向けの Microsoft オブジェクト・リレーショナル・マッピング・フレームワークとして実証されています。ドメインオブジェクトを通じてリレーショナルデータを操作できます。また、Entity Framework を使用することで、データベースの永続化に必要なコードのほとんどを不要にすることができます。
Entity Frameworkは、パフォーマンスとスケーラビリティが重要となる、トランザクション数の多いアプリケーションで使用されます。しかし、これらのアプリケーションの多くでは、データベースがすぐにボトルネックになります。アプリケーション層では必要に応じてアプリケーションサーバーを追加できますが、データベース層では同じことはできません。
このスケーラビリティを実現する唯一の方法は、次のような分散キャッシュを使用することです。 NCache.NETアプリケーション向けの極めて高速でスケーラブルな分散キャッシュです。アプリケーションデータをキャッシュし、コストのかかるデータベースへの接続を削減し、アプリケーションのパフォーマンスとスケーラビリティを向上させます。
Entity Frameworkの2次キャッシュ(L2キャッシュ)は、異なるデータベースコンテキストやユーザーセッション間でデータを保持するキャッシュパターンです。Entity Framework 6.x(Classic)ではこの機能はネイティブには提供されていませんが、 NCache カスタムADO.NETプロバイダーとしてプラグインします。これにより、クエリを分散クラスターにオフロードできるため、コードを変更することなく、線形スケーラビリティと100%の稼働率を確保できます。
Entity Frameworkアプリケーションがマルチサーバー環境で実行されている場合は、Entity Frameworkの2次キャッシュとして分散キャッシュが必要です。そして、 NCache は、マルチサーバー構成に最適なオプションであり、次の理由からこれを使用する必要があります。
使用についての最もよい事 NCache Entity Frameworkの利点は、ユーザー側でプログラミングが不要なことです。アプリケーションの構成ファイルを変更し、インターセプターを追加するだけで済みます。 セクションを追加し、invariantNameとtypeの設定を上書きします。以下は app.config 変更点:
<entityFramework>
<providers>
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
</providers>
<interceptors>
<interceptor type="Alachisoft.NCache.Integrations.EntityFramework.Caching.EFCommandInterceptor, Alachisoft.Integrations.EntityFramework.CachingProvider"/>
</interceptors>
</entityFramework>
その NCache Entity Framework のセカンドレベルキャッシュプロバイダーは、カスタム ADO.NET プロバイダーとしてプラグインされます。このプロバイダーを使用すると、分析モードで実行でき、アプリケーションが Entity Framework に発行するさまざまなクエリをすべてログに記録できます。これらのクエリは、分析モード中にクエリが呼び出された回数とともにファイルに記録されます。以下に例を示します。
<analysis-report>
<query>
<!--Call count = 12-->
<cache-query query-text="SELECT [Extent1].[ProductID] AS [ProductID],
[Extent1].[ProductName] AS [ProductName],
[Extent1].[SupplierID] AS [SupplierID],
[Extent1].[CategoryID] AS [CategoryID],
[Extent1].[QuantityPerUnit] AS [QuantityPerUnit],
[Extent1].[UnitPrice] AS [UnitPrice],
[Extent1].[UnitsInStock] AS [UnitsInStock],
[Extent1].[UnitsOnOrder] AS [UnitsOnOrder],
[Extent1].[ReorderLevel] AS [ReorderLevel],
[Extent1].[Discontinued] AS [Discontinued] FROM
[dbo].[Products] AS [Extent1]
WHERE 5 = [Extent1].[ProductID]"/>
<cache-policy vary-by-cache-param=""
expiration-type="Absolute"
enabled="True"
expiration-time="30sec"
dbsyncdependency="False"
resyncProviderName="EFResync"/>
</query>
</analysis-report>
これにより、キャッシュするクエリとその期間を決定できます。 一部またはすべてのクエリに対してデータベース同期を指定することもできます。
プラグを差し込むことによって NCache Entity Frameworkのセカンドレベルキャッシュプロバイダをapp.configファイルに追加することで、アプリケーションにエンタープライズレベルの分散キャッシュを導入できます。主な機能は以下のとおりです。 NCache EntityFrameworkアプリを提供します。
ただし、 NCache Entity Frameworkの2次キャッシュは非常に高速で簡単ですが、限られたセットしか提供しません。 NCache 特徴。その理由は、 NCache カスタムADO.NETプロバイダーとしてプラグインされ、SQLクエリレベルで処理する必要があるという制約があります。 NCache Entity Framework の第 2 レベル キャッシュ プロバイダーとして使用する場合、使用できない機能があります。
あなたのための代替手段は使用することです NCache Entity Framework アプリケーション内から直接作成することで、 NCache API Entity Framework以外の.NETアプリケーションと同様に、呼び出しは可能です。この方法を採用するには多少のプログラミング作業が必要ですが、そのメリットが追加のプログラミング作業を上回ると判断されるかもしれません。
以下は、Entity Frameworkの第XNUMXレベルのキャッシュとして使用した場合と、使用した場合に見落とす可能性のある機能のリストです。 NCache アプリケーションから直接。
| 機能カテゴリ | 機能 | EF キャッシュ プロバイダー (コードなし) | NCache ダイレクトAPI |
|---|---|---|---|
| 高度な操作 | 一括操作 | 使用できない | 利用できます |
| グループ化と検索 | タグ (NAIST) と 名前付きタグ | 使用できない | 利用できます |
| クエリ | SQL LINQ検索 | 使用できない | 利用できます |
| 並行性 | ロッキング アイテムのロック解除 | 使用できない | 利用できます |
| 統合性 | キャッシュアイテムのバージョン管理 | 使用できない | 利用できます |
| 情報元 | リードスルー / ライトスルー / 後書き | 使用できない | 利用できます |
| メッセージング | イベント通知 (アイテム、一般、カスタム) | 使用できない | 利用できます |
| メンテナンス | キャッシュローダーとリフレッシャー | 使用できない | 利用できます |
©著作権 Alachisoft 2002 - . All rights reserved. NCache はダイヤテック株式会社の登録商標です。