2015-09-03 15 views
3

В чем разница между обычным классом кеша и классом MemoryCache?В чем разница между обычным классом кэша и классом MemoryCache?

Кэш означает данные, хранящиеся в памяти, а затем зачем нужен дополнительный класс для MemoryCache?

Какова цель класса 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; 
} 

, что делает этот код? он отслеживает изменение содержимого файла?

нравится понимать поток. спасибо

+0

Возможный дубликат. «Основное различие между HttpRuntime.Cache и MemoryCache заключается в том, что последний был изменен, чтобы сделать его пригодным для использования приложениями .NET Framework, которые не являются приложениями ASP.NET». https://stackoverflow.com/questions/13704000/system-runtime-caching-memorycache-vs-httpruntime-cache-are-there-any-differen –

+0

Dupe of: http://stackoverflow.com/questions/14232130/what -is-difference-between-memorycache-vs-objectcache-in-net-4-0 –

ответ

4

HttpRuntime.Cache получает кэш для текущего приложения.
посмотреть здесь
msdn

MemoryCache является кэш хранится в памяти. Представляет тип, который реализует кеш в памяти.
msdn

Вот отличный блог, который очистит все ваши проблемы blog
Просто несколько строк, взятых из этого блога.

говорит MSDN this
The Cache class is not intended for use outside of ASP.NET applications. It was designed and tested for use in ASP.NET to provide caching for Web applications. In other types of applications, such as console applications or Windows Forms applications, ASP.NET caching might not work correctly.

Хотя Microsoft всегда был твердо уверен, что кэш ASP.NET не предназначен для использования вне сети. Но многие люди все еще застряли в .NET 2.0 и .NET 3.5 и нуждаются в чем-то, с чем можно работать.

Microsoft наконец-то реализовал абстрактный класс ObjectCache в последней версии .NET Framework и реализацию MemoryCache, которая наследует и реализует ObjectCache для целей в памяти в настройках, отличных от веб-сайтов. System.Runtime.Caching.ObjectCache находится в сборке System.Runtime.Caching.dll. Это абстрактный класс, который объявляет в основном те же интерфейсы стиля .NET 1.0, которые находятся в кеше ASP.NET.

System.Runtime.Caching.MemoryCache - это реализация ObjectCache в памяти и очень похожа на кеш ASP.NET с несколькими изменениями.

+2

Я предполагаю, что класс кэша также хранит данные в памяти, и снова MemoryCache - это кеш, хранящийся в памяти .... тогда в чем разница? – Mou

+0

объяснение не очень понятно, потому что оба класса являются резидентными. – Mou

Смежные вопросы