Caching no .NET Framework 4.0

Olá pessoal, como estão?
Hoje vou apresentar uma mudança interessante sobre caching, em comparação com versões anteriores.

Introdução

A versão 4.0 da plataforma .NET trouxe uma mudança estrutural esperada para os recursos de Cache. Nas versão 3.5 (até SP1), a plataforma fornecia uma implementação do Cache através do namespace System.Web.Caching. Nas versões anteriores o cache estava disponível no namespace System.Web, o que criada uma dependência com as classes do ASP.NET.

Neste novo framework, o namespace System.Runtime.Caching reúne toda a API necessária para criar todas as tarefas comuns ao ASP.NET Caching de versões anteriores.

System.Runtime.Caching e MemoryCache

Tudo que precisamos para trabalhar com cache, em aplicações Web ou não, está reunido no namespace System.Runtime.Caching. A unidade básica de trabalho é a classe abstrata ObjectCache, que fornece a base para criar implementações customizadas de cache.

E como é de se esperar, a classe MemoryCache é a implementação da classe abstrata ObjectCache para armazenamento das informações em memória.

public class MemoryCache : ObjectCache, 
	IEnumerable, IDisposable

A utilização do cache é muito simples, bem parecida com o modelo anterior:

    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;

Extendendo o Cache

É possível customizar todo mecanismo de cache através de várias abordagens. ScottGu escreveu sobre isto, que você pode acessar através deste link.

Conclusão

Algo muito esperado em versões anteriores, finalmente o cache está disponível sem criar relacionamento com assemblies exclusivamente Web. Perfeito para quem desenvolve outros tipos de aplicação, usufruindo deste recurso sem carregar código desnecessário.

Abraços!

Published Wednesday, April 14, 2010 3:01 PM by anobre
Filed under: ,

Comments

# re: Caching no .NET Framework 4.0

Saturday, May 29, 2010 12:30 PM by Gladys Gonzalez

Gostei do post com as explicações sobre o cashing! E além do mais as mudanças vieram para melhor.