Whats new? | Login
Cadastre-se | Atendimento | RSS
 
Live chat by Netwatts
Home Entenda o site Revistas Canais Cursos Palestras Suporte Fórum +Serviços Assine Compre Créditos
Você está em: / canal .net [artigos]
   + .net:   artigos   |   vídeos   |    cursos   |    mais
 
 
Outras seções:
Home 
Entenda o site 
Revistas 
Canais 
Cursos 
Palestras 
Suporte 
Fórum 
Oportunidades 
 Todos os links 

 
  Ir para o Canal .net  
+Canais:
Canal Delphi 
Canal Java 
Canal .net 
Canal Banco de dados 
Canal Mobile 
Canal Ruby on Rails 
Canal PHP 
Canal ASP 
Canal WebDesign 
Canal Engenharia de Software 
Canal Linux 
Canal Scripting 
Canal Outros 
  Todo conteúdo DevMedia 

 
  ver cursos de .net  
+Cursos:
Cursos de Java 
Cursos de .net 
Cursos de Banco de dados 
Cursos de Delphi 
Cursos de Engenharia de Software 
Cursos de Ruby on Rails 
Cursos de ASP 
Cursos de WebDesign 
Cursos de PHP 
Cursos de PalmOS 
Cursos de Linux 
Cursos de Scripting 
  Formações completas 
  Todos os cursos 

 
Canal de conteúdo .net
Revista .net Magazine
Suporte .net
Formacoes completas .net
Palestras de .net
E-books de .net
Downloads de .net
 

+Revistas:
ClubeDelphi 
.net Magazine 
Java Magazine 
webMobile Magazine 
SQL Magazine 
Engenharia de Software Magazine 
  Edições anteriores impressas 
  Todas as revistas 


[Fechar]
Este post está disponível para quem é assinante da .net Magazine ou para quem possui Créditos DevMedia.


  Conheça os planos de créditos DevMedia e visualize esse post agora mesmo!

Plano conveniência – Neste plano este post custa R$ 0,00 (Compre agora)
Esse plano permite que você compre somente um post, pagando por ele seu preço sem desconto.

Plano ocasional: Aqui este post custa: R$ 0,00 (assinante) ou R$ 0,00 (não-assinante)
Este plano é ideal para quem tem interesse em mais de um post. Você compra um mínimo de R$ 50,00 em créditos e ganha, em média, 50% de desconto no preço do post. Compre Créditos agora!

Assinatura de Créditos (Plano econômico) – Aqui este post custa R$ 0,00
Este plano é ideal para quem tem interesse em muitos posts. Com esse plano você compra R$ 180,00 em créditos e ganha, em média, 80% de desconto no preço do post. Assine este plano agora!

> Saiba mais sobre o Sistema de Créditos DevMedia


Cachê no ASP.NET

Cachê no ASP.NET

 

Eu andei muito atarefado e tive dificuldades para postar este artigo, então aos que acompanham meus posts peço desculpas.

 

Bom, hoje vamos falar de cachê no ASP.NET.

 

Introdução

Quando falamos em cachê estamos falando de armazenamento de dados em memória e também de desempenho.

 

É importante lembrar que por ser armazenado em memória os dados contidos no cachê são voláteis.

 

Conceito

O conceito de cachê é bem simples, basicamente é armazenar dados frequentemente acessados, obtidos a partir de uma origem de dados a qual normalmente não é modificada constantemente no dia, por exemplo, (Não existe uma regra para definir quando o cachê deve ser implementado em uma aplicação).

 

Nota: O cachê pode ser facilmente visto como um diferencial positivo ou negativo em uma aplicação, pois pequenas falhas na lógica de utilização podem sobrecarregar o servidor e deixar a aplicação mais lenta do que se tivesse rodando sem a implementação de uma lógica de cachê.

 

Cachê no ASP.NET

O cachê fornece aos desenvolvedores a possibilidade de armazenar um dado em memória usando chave/valor.

 

O ASP.NET oferece possibilidades interessantes para que seja possível gerenciar este recursos com eficiência. Utilizando os recursos de gerenciamento do próprio ASP.NET é possível remover itens contidos no cachê caso a sua fonte de dados seja modificada, é possível também expirar os dados do cachê definindo um período máximo para sua permanência e outra possibilidade é que o ASP.NET faça a limpeza destes dados caso a memória esteja baixa.

 

Cachê - Novas características do ASP.NET 2.0

Abaixo estão listadas características novas implementadas no ASP.NET 2.0, porém neste artigo não vou me aprofundar muito nelas e sim em uma característica existente desde a versão 1.x do ASP.NET e em artigos futuros vamos falaremos detalhadamente sobre estas mudanças.

 

Eu optei por falar de um recurso que posso chamar de antigo, pois notei que muitos o desconhecem apesar de ser muito útil e fácil de implementar.

 

Perfis de Cache

Este recurso possibilita ao usuário definir perfis no arquivo de configuração de sua aplicação web.config, onde é possível configurar todos os parâmetros do cachê e esta configuração pode ser aplicada a uma ou a N página de sua aplicação, abaixo segue um exemplo da configuração de um perfil:

 

    <caching>

      <outputCacheSettings>

        <outputCacheProfiles>

     <add name="cacheteste" enabled=”true” duration="60"                               varyByParam=”” />

        </outputCacheProfiles>

      </outputCacheSettings>

    </caching>

Listagem 01. Definição de um perfil de cachê.

 

Customizando CacheDependency

Este recurso possibilita ao usuário criar uma classe customizada de dependência de cachê, onde é preciso somente que a classe customizada herde a classe CacheDependency e implemente uma regra qualquer para expirar o cachê.

 

SqlCacheDependency

Este recurso possibilita ao usuário definir uma dependência de cachê ligada diretamente a uma tabela ou a uma linha especifica de uma tabela do SQL Server, onde ao ser modificada a linha ou a tabela o dado existente no cachê é automaticamente removido.

 

O ASP.NET pode gerenciar modificações feitas em tabelas a partir da versão 7 do SQL Server, porém para gerenciar modificações em uma linha especifica é necessário a utilização do SQL Server 2005.

 

Seguimentando Cachê

Este recurso possibilita ao usuário definir uma área de sua página que não será armazenada no cachê. Então parte será armazenada e parte não será, por exemplo, você tem uma página que exibi dados de um banco de dados, mas também exibi dados estáticos então é possível definir que a área estática não será armazenada no cachê. Já que não há necessidade para tal.

 

Usando CacheDependency

Pesquisando e conversando com alguns amigos sobre a utilização de uma lógica de cachê em nossas aplicações descobri que poucos sabiam que existe a possibilidade de associar um objeto existente no cachê a uma dependência não física e os que sabiam nunca implementaram tal idéia.

 

Para implementar uma dependência como mencionado acima, devemos utilizar o que chamamos de keys, o ASP.NET fornece um overload na classe CacheDependency que recebe como parâmetro um array de string contendo os identificadores de objetos contidos no cachê que serão as dependências a imagem 01 possibilita um entendimento melhor deste método.

 

ddcacheaspnetfig01.jpg 

Figura 01. Overload da Classe CacheDependency utilizado neste artigo.

 

Este overload permite que sejam utilizadas chaves de itens já existentes no cachê para o ASP.NET se baseie no seu conteúdo e identifique quando os objetos de cachê dependentes deste devem ser removidos. A listagem 01 demonstra sua utilização.

 

public class Clientes

{

public static readonly string[] ChavesMestre = new string[] {"keyCliente" };

     

        public List<Cliente> Listar()

{           

            List<Cliente> nomes = new List<Cliente>();

 

            System.Web.Caching.Cache dadosCache = HttpRuntime.Cache;

               

            if (dadosCache.Get("Clientes") == null)

            {

                dadosCache.Insert(ChavesMestre[0], DateTime.Now);

 

                nomes.Clear();

                nomes.Add(new Cliente(1, "Diego", "diego.dias@2dsolucoes.net"));

                nomes.Add(new Cliente(2, "Fulano", "fulano.fulano@2dsolucoes.net"));

                nomes.Add(new Cliente(3, "Fernando", "diego.dfsd@uol.com.br"));

                nomes.Add(new Cliente(4, "Mario", "atendimento@2dsolucoes.com.br"));

 

                System.Web.Caching.CacheDependency cd = new System.Web.Caching.CacheDependency(null, ChavesMestre);

                dadosCache.Insert("Clientes", nomes, cd);

            }

            else

            {

                nomes.Clear();

                nomes = dadosCache.Get("Clientes") as List<Cliente>;

            }

 

            return nomes;

        }

    }

Listagem 01.  Demonstra como utilizar a dependência a partir de keys.

 

Como podemos ver na listagem 01 existe um método denominado de Listar que é responsável por listar clientes. Neste método podemos ver que existem algumas linhas destacadas.

 

Onde a linha destacada em amarelo é onde é criado um cachê que pode ter um valor qualquer, mais adiante explicarei a necessidade de criá-lo.

 

A linha destacada em cinza é onde é criado o cachê com uma lista de clientes e também onde é definida a dependência deste objeto que acaba de ser inserido no chave. Como se pode ver antes da inserção do objeto no cachê é criado um objeto de dependência cujo, este objeto é o que orienta o ASP.NET quando a listagem de clientes deve ser removida do cachê.

 

Como eu havia dito, antes de inserir a listagem de clientes no cachê foi inserido no cachê um objeto qualquer (neste caso a data atual) a chave que identifica este objeto será usada na criação do objeto de dependência para indicar que quando o objeto referente à chave ChavesMestre for modificado todos os demais objeto que foram associados a ele (objeto de dependência) serão removidos do cachê.

 

Está é uma solução interessante no meu ponto de vista, até mesmo por que existem situações que não é possível gerenciar arquivos e o banco de dados não é um Sql Server.

 

Nota: O gerenciamento de dependência ligado direto a um banco de dados só é possível se o banco for SQL Server a partir da versão 7

 

Bom até os próximos artigos, onde discutiremos as demais formas de fazer dependência e vocês poderam então decidir qual é a mais adequada para sua aplicação.

 

Referências:

http://msdn2.microsoft.com/en-us/library/xsbfdd8c(VS.80).aspx

 

Diego Dias    

diego.dias@2dsolucoes.net





DIEGO DIAS
Diego Dias (diego.dfsd@uol.com.br), 21 anos, desenvolvedor C# e Visual Basic .NET desde 2002. Atualmente é analista de sistemas da Ciatech Soluções Digitais empresa do segmento de e-learning (www.ciatech.com.br).
Ver space do autor


Estatísticas deste post:
Visualizações:  4349
Favoritado:  5 vez(es)
 
Conteúdo:
Didática:
Utilidade:
4 0
Feedbacks: 6

  Central de Serviços:
Inclua seu próprio artigo! (ajuda)
Participe! Inclua um comentário
Adicionar este post a Favoritos
Marcar este post como lido/assistido
Inclua uma anotação pessoal (ajuda)
RSS Feeds
Versão para impressão



Participe! Inclua um comentário
[Fechar]

Este post é fechado - você precisa ter acesso ao post para incluir um comentário.


[Fechar]

Você precisa estar logado para dar seu feedback.

Clique aqui para efetuar o login

Caso não tenha um cadastro DevMedia, clique aqui para se cadastrar (gratuito)
 
DevMedia Group - Tel: (21) 3382-5038 - www.devmedia.com.br
2009 - Todos os Direitos Reservados a DevMedia Group