4

Azure AppFabric Caching Service の使用を開始しましたが、DataCacheFactory オブジェクトを作成するベスト プラクティスの方法がわかりません。現在、キャッシュへの呼び出しごとに作成していますが、明らかにこれは理想的な方法ではありません...

シングルトンの呼び出しをアドバイスする人もいます。しかし、これがどのように実装されるかを理解しているかどうかはわかりません (実際の Singleton クラスではなく、すべてを結び付ける方法)。

今日、Get/Put/Remove 操作を実行できる Ninject を使用して作成された CacheProvider クラスがあります。これらのメソッドごとに、DataCacheFactory オブジェクトを作成し、.GetDefaultCache() を呼び出して DataCache オブジェクトを取得します。ここで、Put/Get/Remove をそれぞれ呼び出します。これは、次のような単一のメソッドで行います。

private T Cache<T>(Func<DataCache, T> cacheAction)
{
    using (DataCacheFactory dataCacheFactory = new DataCacheFactory())
    {
        DataCache dataCache = dataCacheFactory.GetDefaultCache();
        return cacheAction(dataCache);
    }
}

これはあまり賢いアイデアではないことは確かです。代わりに、DataCacheFactory オブジェクトが一度だけ作成されるシングルトン経由で DataCache オブジェクトを取得する必要があります。しかし、そのオブジェクトはリクエスト間でどのように生き残るのでしょうか? そして、それは Azure 上の 1 つ以上のインスタンスでどのように機能しますか?

これがすべて理にかなっており、私よりも経験豊富な人 (3 時間) が私を助けてくれることを願っています.

4

1 に答える 1

6

シングルトン オブジェクトはアプリケーション スコープに存在します。グローバル静的レベルでプライベート DataCache オブジェクトを宣言し、オブジェクトが null の場合はインスタンス化するか、null でない場合はオブジェクトを返すプロパティ Get を提供するだけです。

この方法では、アプリケーションのリサイクルごとに 1 回だけキャッシュの構成と接続を計測するコストを支払うことになります。

各インスタンスは独自の DataCache オブジェクトをインスタンス化しますが、問題ありません。

キャッシュが格納される実際のデータは、ローカル マシンのメモリではなく、分散型で非常に高速な Azure の専用キャッシュ サーバーに格納されます。

于 2012-02-23T17:54:32.923 に答える