web-dev-qa-db-ja.com

.NET 4キャッシングサポート

.NET 4 Frameworkにはキャッシュサポートが組み込まれていることを理解しています。誰もこれについての経験がありますか、またはこれについてさらに学ぶための良いリソースを提供できますか?

私はメモリ内のオブジェクト(主にエンティティ)のキャッシング、おそらくSystem.Runtime.Cachingの使用について言及しています。

32
Hosea146

thisSystem.Runtime.CachingSystem.Web.Cachingおよびより一般的な名前空間。

http://deanhume.com/Home/BlogPost/object-caching----net-4/37 を参照してください

スタック上で、

システム実行時キャッシュでキャッシュの依存性がある そして、

システム実行時キャッシュのパフォーマンス

役に立つかもしれません。

27
Jodrell

自分では使用していませんが、単純なオブジェクトをメモリにキャッシュしているだけの場合は、System.Runtime.Caching名前空間の MemoryCache クラスを参照している可能性があります。ページの最後に使用方法の小さな例があります。

編集:この回答に対して実際に作業を行ったように見せるために、そのページのサンプルを次に示します。 :)

private void btnGet_Click(object sender, EventArgs e)
{
    ObjectCache cache = MemoryCache.Default;
    string fileContents = cache["filecontents"] as string;

    if (fileContents == null)
    {
        CacheItemPolicy policy = new CacheItemPolicy();

        List<string> filePaths = new List<string>();
        filePaths.Add("c:\\cache\\example.txt");

        policy.ChangeMonitors.Add(new 
        HostFileChangeMonitor(filePaths));

        // Fetch the file contents.
        fileContents = 
            File.ReadAllText("c:\\cache\\example.txt");

        cache.Set("filecontents", fileContents, policy);
    }

    Label1.Text = fileContents;
}

興味深いのは、従来のASP.NETキャッシュのように、キャッシュに依存関係を適用できることを示しているためです。ここでの大きな違いは、System.Web Assemblyに依存していないことです。

15
Mike Goatly

フレームワークのMemoryCacheを開始するのに適していますが、 LazyCache を検討することもできます。これは、メモリキャッシュよりもシンプルなAPIを持ち、他のNice機能と同様にロック機能が組み込まれているためです。 nugetで利用可能です:PM> Install-Package LazyCache

// Create our cache service using the defaults (Dependency injection ready).
// Uses MemoryCache.Default as default so cache is shared between instances
IAppCache cache = new CachingService();

// Declare (but don't execute) a func/delegate whose result we want to cache
Func<ComplexObjects> complexObjectFactory = () => methodThatTakesTimeOrResources();

// Get our ComplexObjects from the cache, or build them in the factory func 
// and cache the results for next time under the given key
ComplexObject cachedResults = cache.GetOrAdd("uniqueKey", complexObjectFactory);

最近、この記事を書いた ドットネットでのキャッシュの開始 役に立つかもしれません。

(免責事項:私はLazyCacheの著者です)

5
alastairtree

.Netframework 4.0のSystem.Runtime.Cachingを参照していることを願っています

以下のリンクが良い出発点です: Here

2
Kishore Borra

MSDNの記事 「ASP.NETキャッシュ:テクニックとベストプラクティス」 は素晴らしいスタートです。

0
AD.Net