3

今日、初めて AppFabric - キャッシング (別名 Ms Velocity) に取り組み、msdn 仮想ラボをチェックアウトしました。

https://cmg.vlabcenter.com/default.aspx?moduleid=4d352091-dd7d-4f6c-815c-db2eafe608c7

私が得られないこのコードサンプルがあります。キャッシュ オブジェクトを作成し、セッション状態に格納します。ドキュメントには次のように書かれています:

キャッシュ オブジェクトをセッション状態に格納し、使用するたびにそのオブジェクトの同じインスタンスを取得する必要があります。

これは、ASP.NET でキャッシュを使用するために使用した方法ではありません。このパターンの理由は何ですか?それを使用する必要がありますか?

private DataCache GetCache()
{
    DataCache dCache;
    if (Session["dCache"] != null)
    {
        dCache = (DataCache)Session["dCache"];

        if (dCache == null)
            throw new InvalidOperationException("Unable to get or create distributed cache");
    }
    else
    {
        var factory = new DataCacheFactory();
        dCache = factory.GetCache("default");
        Session["dCache"] = dCache;
    }

    return dCache;
}
4

1 に答える 1

1

これは、DataCacheFactory作成するのにコストのかかるオブジェクトであるためです。キャッシュにアクセスするたびにインスタンスを作成したくないからです。

彼らがラボで示しているのは、DataCacheFactory 一度だけインスタンスを作成してインスタンスを取得し、DataCacheその DataCache インスタンスをセッション状態に保存して、キャッシュにアクセスするたびにそのインスタンスに戻ることができるようにする方法です。

もちろん、これはまだユーザーごとに DataCacheFactory のインスタンスを作成していることを意味します。それを Application 状態に格納することは、さらに優れた設計になると思います。

于 2010-01-06T16:22:40.120 に答える