我知道.NET 4 Framework內置了緩存支持。有沒有人有任何這方面的經驗,或可以提供很好的資源,以瞭解更多關於此?.NET 4緩存支持
我指的是緩存內存中的對象(主要是實體),並可能使用System.Runtime.Caching。
我知道.NET 4 Framework內置了緩存支持。有沒有人有任何這方面的經驗,或可以提供很好的資源,以瞭解更多關於此?.NET 4緩存支持
我指的是緩存內存中的對象(主要是實體),並可能使用System.Runtime.Caching。
我假設你得到this,System.Runtime.Caching
,類似於System.Web.Caching
和更通用的命名空間。
參見http://deanhume.com/Home/BlogPost/object-caching----net-4/37
和在堆棧上,
is-there-some-sort-of-cachedependency-in-system-runtime-caching和,
performance-of-system-runtime-caching。
可能有用。
MSDN文章"ASP.NET Caching: Techniques and Best Practices"是一個很好的開始。
希望你是指System.Runtime.Caching .Netframework的4.0
下面的鏈接是很好的起點: Here
我沒有利用它自己,但如果你」只是在內存中緩存簡單對象,你可能指的是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程序集的依賴。
我已經使用這個,發現文檔缺乏。這是我的理解,你可以使用它基本上相同,你會System.Web緩存。 – goalie7960
的MemoryCache的框架是一個良好的開端,但你可能還喜歡考慮LazyCache,因爲它具有比內存緩存簡單的API,並內置鎖定以及其他一些不錯的功能。它可用於的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的作者)
緩存什麼?你是指實體框架,WCF還是應用服務器? – weismat
'System.Runtime.Caching'顯然;-) – Jodrell
如果您尚未升級到.NET 4.5,則應該瞭解以下錯誤:http://stackoverflow.com/a/15715990/13087 – Joe