Dynamics CRM 2011 Developer Extensions 紹介 – CrmOrganizationServiceContext のキャッシュのコントロール
みなさん、こんにちは。
今回は前回に続き、CrmOrganizationServiceContext のキャッシュ機能の
トピックをお届けします。今回はキャッシュのコントロールです。
CrmOrganizationServiceContext の依存関係
CrmOrganizationServiceContext はいくつかのクラスに依存し、また
機能を提供します。依存関係は以下のページを参照してください。
Developer Extensions のコンテキスト オブジェクト モデル
https://technet.microsoft.com/ja-jp/library/gg695819.aspx
このページの表から、キャッシュを保持するクラスが確認できます。
キャッシュの無効化
キャッシュをコントロールする方法の一つとして、キャッシュ機能を
完全に無効にする方法が考えらます。この場合、キャッシュ機能を
もつクラスの依存を取り除くだけで実現可能です。
var connection = new CrmConnection("Xrm");
// CrmConnection から OrganizationService を生成。キャッシュ機能なし
var myService = new OrganizationService(connection);
// キャッシュなしの組織サービスを渡して XrmContextService を生成
var xrm = new XrmContext(myService);
ほかの方法として、キャッシュ機能を持っている OrganizationServiceCache
の設定を変更することも可能です。
var connection = new CrmConnection("Xrm");
// OrganizationServiceCache の Mode で Disable を設定
var myServiceCache = new OrganizationServiceCache();
myServiceCache.Mode = OrganizationServiceCacheMode.Disabled;
// 生成した OrganizationServiceCache と CrmConnection よりサービス生成
var myService = new CachedOrganizationService(connection, myServiceCache);
var xrm = new XrmContext(myService);
キャッシュのタイムアウト時間を制御
サービスコンテキストの生成にはアプリケーション構成ファイルを利用できます。
またその中で詳細な設定が可能です。詳細は以下のページを参照してください。
構成ファイルを使用したコンテキストの構成
https://technet.microsoft.com/ja-jp/library/gg695805.aspx
ここでは既定の構成のうち、objectCache 要素のみ以下のように duration を
変更しました。
<objectCache default="Xrm">
<add
name="Xrm"
type="System.Runtime.Caching.MemoryCache, System.Runtime.Caching, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
instanceMode="PerName"
absoluteExpiration=""
slidingExpiration="00:00:00"
duration="00:00:10"
priority="Default"
outputCacheProfileName="Xrm"
/>
< /objectCache>
またサービスコンテキストの生成部分は以下のようにしています。
var xrm = new XrmContext("Xrm");
この場合、プログラムからレコードを追加後、10 秒待つことで最新の情報を
取得することが可能です。
まとめ
SDK では他にもキャッシュのハンドル方法が提供されています。
是非いろいろ試してください。
- Dynamics CRM サポート 中村 憲一郎