2011-05-12 10 views
32

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

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

+10

キャッシュ? Entity Framework、WCF、またはアプリケーションサーバーを指していますか? – weismat

+0

'System.Runtime.Caching'明らかに;-) – Jodrell

+0

まだ.NET 4.5にアップグレードしていない場合は、次のバグに注意する必要があります:http://stackoverflow.com/a/15715990/13087 – Joe

答えて

2

は良い出発点であるあなたが

リンクの下には.Netframework 4.0のSystem.Runtime.Cachingを参照しているホープ単純なオブジェクトをメモリにキャッシュするだけで、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アセンブリに依存していないことです。

15

私はそれを利用していませんでしたが、あなた」の場合:

+1

私はこれを使用して、ドキュメントが不足していることを発見しました。基本的にSystem.Webのキャッシュと同じように使うことができると私は理解しています。 – goalie7960

4

フレームワーク内のMemoryCacheは良い場所ですが、メモリキャッシュよりも簡単なAPIを持ちロック機能やその他の便利な機能を備えているため、LazyCacheと考えることもできます。それは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); 

私は最近、あなたが役に立つかもしれませんgetting started with caching in dot netについては、この記事を書きました。

(免責事項:私はLazyCacheの著者だ)何の

関連する問題