Entity Frameworkは、基盤となるリレーショナルデータベースからの抽象化を提供するオブジェクトリレーショナルマッピングエンジンであるため、開発が大幅に簡素化されます。 これらの利点のために、ますます多くのデータ中心でトランザクションの多いアプリケーションとサービスがEntityFrameworkで開発されています。
しかし、これらのトラフィックの多いアプリケーションは、スケーラビリティの問題に直面しています。 アプリケーション層レベルはスケーラブルですが、データベースまたはデータストレージは、スローされるトランザクションの数の増加に対応できません。
これはどこです 分散キャッシュ データをキャッシュし、スケーラビリティのボトルネックを引き起こしている高価なデータベーストリップを減らすことができるためです。 ただし、Entity Frameworkは、アプリケーションで分散キャッシュを使用できるようにする、すぐに使用できるソリューションを提供していません。 ただし、分散キャッシュをEntityFrameworkアプリケーションに組み込むにはXNUMXつの方法があります。 XNUMXつは、Entity Frameworkアプリケーションコードを変更し、分散キャッシュへの直接API呼び出しを行うことです。 XNUMXつ目は、バックグラウンドでのキャッシュを組み込んだカスタムADO.NETプロバイダーを実装した分散キャッシュを使用することです。
EntityFrameworkには ADO.NETのパブリックプロバイダーモデル プロバイダ 3のプロバイダーを作成できる場所rd パーティデータベース。 NCache を実装しました カスタムEntityFrameworkADO.NETプロバイダー 分散キャッシュ呼び出しを行うことができる独自の NCache API。 このカスタムEntityFrameworkADO.NETプロバイダーは、すべてのデータベースクエリ呼び出しをインターセプトし、これらのクエリの結果セットを分散キャッシュに配置します。 それで、 NCache カスタムEntityFrameworkプロバイダーは、後続のすべてのクエリ呼び出しをインターセプトし、高価なデータベーストリップを行うのではなく、分散キャッシュから結果を返すだけです。 クエリの結果セットが分散キャッシュに存在しない場合、クエリはデータベースに対して実行され、その結果セットが分散キャッシュに配置されます。
と、 NCache カスタムEntityFrameworkプロバイダーは、分散キャッシュ内のデータが常に一貫性があり、データベースと同期していることを確認する必要もあります。 そして、そのために NCache 使用されます SqlCacheDependency .NETで提供されます。 SqlCacheDependenyはSQLクエリをSQLServerに登録するため、このクエリで表されるデータセットのいずれかの行がデータベースで変更された場合、SQLServerは.NETイベント通知を NCache. NCache この.NETイベントをキャッチし、対応する結果セットを分散キャッシュから削除します。
図1はその方法を示しています NCache Entity Framework Providerは、EntityFrameworkアプリケーションにプラグインします。
図1 NCache 使用されているEntityFrameworkプロバイダー
あなたが統合することができます NCache アプリケーションのカスタムEntityFrameworkADO.NETプロバイダーは、次のXNUMXつの簡単な手順で実行できます。
- デフォルトのプロバイダーを置き換えます。 アプリケーションのデフォルトプロバイダーを次のように置き換えます NCache app.config/web.configおよび.edmxファイルのエンティティフレームワークプロバイダー。
- 登録する NCache プロバイダー: にアプリケーションを登録します NCache Entity Frameworkの構成(efcaching.conf)。 efcaching.configでは、EntityFrameworkアプリケーションのログレベルや有効期限ポリシーなどを簡単に指定できます。
- 分析モードでアプリを実行します。 アプリケーションを分析モードで実行します。 分析モードでは、 NCache Entity Frameworkプロバイダーは、アプリケーションによって実行されたEntityFrameworkクエリとその頻度をログに記録します。 ログに基づいて、キャッシュするEntityFrameworkクエリを精査できます。
- 通常どおりアプリを実行します。 キャッシュモードに切り替えて、アプリケーションを実行します。
したがって、を使用して NCache Entity Frameworkキャッシングプロバイダーを使用すると、EntityFrameworkアプリケーションコードを変更せずに線形スケーラビリティを簡単に実現できます。
だから、完全に機能する60日間の試用版をダウンロードしてください NCache Enterprise 自分で試してみてください。
はい、SQL、Oracle、MySQL、PostreSQLなどのEntityFrameworkコネクタドライバーで動作します。 NCache キャッシングプロバイダーは、ADO.NETエンティティフレームワークプロバイダーと元のデータプロバイダーの間で機能して、クエリの応答をキャッシュします。
これはSQLサーバーまたはENTITYFrameworkコネクタドライバーでのみ機能しますか?