Archives

Archives / 2010 / April
  • 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!

    Read more...

  • Programação paralela no .NET Framework 4 – Parte I

    O avanço de tecnologia nos últimos anos forneceu, a baixo custo, acesso  a workstations com inúmeros CPUs. Facilmente encontramos hoje máquinas clientes com 2, 4 e até 8 núcleos, sem considerar os “super-servidores” com até 36 processadores :)

    Read more...