COMO: Implementar baseada em chave dependências para cache de dados no ASP.NET usando o Visual translation from VPE for Csharp .NET

Traduções deste artigo Traduções deste artigo
ID do artigo: 308147 - Exibir os produtos aos quais esse artigo se aplica.
Expandir tudo | Recolher tudo

Neste artigo

Sumário

Este artigo demonstra como implementar o cache de dados usando dependências com base em chave em um aplicativo Microsoft ASP.NET. O exemplo apresentado neste artigo cria e insere um objeto DataSet para o cache com uma dependência definir em outro item de entrada de cache fazendo referência a sua chave. Para obter exemplos de cache com tempo ou dependências baseadas em arquivo de dados, consulte a seção "Referências" deste artigo.

Requisitos

  • Microsoft Windows 2000 ou Microsoft Windows XP
  • Microsoft Internet Information Server (IIS)
  • Microsoft .NET framework
  • Microsoft SQL Server

Criar um aplicativo ASP.NET

Usar Microsoft Visual translation from VPE for Csharp .NET para criar uma Web do Microsoft ASP.NET aplicativo chamado DataCacher:
  1. Abra o Microsoft Visual Studio .NET.
  2. No menu arquivo , aponte para novo e, em seguida, clique em Project .
  3. Na caixa de diálogo New Project , clique em projetos do Visual translation from VPE for Csharp em Tipos de projeto e, em seguida, clique em ASP.NET Web Application em modelos .
  4. Na caixa local , digite DataCacher como o nome do projeto, substituindo o nome WebApplication# padrão no caminho de URL. Se você estiver usando o servidor local, você pode deixar o nome do servidor como http://localhost, que define o local para http://localhost/DataCacher.

Criar o formulário da Web

Observação : O código é incluído nesta seção é explicado com mais detalhes na seção "Executar o código".

Para criar os cache de exemplo de dados:
  1. Adicione uma nova Web Form chamada DataCacheSample.aspx para seu projeto no Visual Studio.NET:
    1. Clique com o botão direito do mouse o nó de projeto no Solution Explorer.
    2. Clique em Adicionar e, em seguida, clique em Adicionar novo formulário da Web .
    3. Nomeie o DataCacheSample.aspx de formulário da Web.
    4. Clique em Abrir .
  2. Na guia modo de exibição Design para formulário da Web no IDE do Visual Studio .NET (ambiente de desenvolvimento integrado), adicionar um botão de formulário da Web para a página:
    1. Use uma operação de arrastar-e-soltar para mover um botão de formulário da Web para a página.
    2. Clique para selecionar o novo botão. Altere a propriedade ID para CreateNewOrCached e altere a propriedade Text para Criar novo ou cache .
  3. Adicione um segundo botão de formulário da Web:
    1. Use uma operação de arrastar-e-soltar para mover outro formulário da Web de botão para a página da caixa de ferramentas.
    2. Clique para selecionar o novo botão. Altere a propriedade ID para Remover e, em seguida, altere a propriedade Text para Remover .
  4. Adicione um rótulo de formulário da Web:
    1. Use uma operação de arrastar-e-soltar para mover um rótulo de formulário da Web para a página da caixa de ferramentas.
    2. Clique para selecionar o novo rótulo. Altere a propriedade ID para CacheStatus e, em seguida, desmarque a propriedade Text .
  5. Use uma operação de arrastar-e-soltar para mover um controle de formulário da Web DataGrid até a página da caixa de ferramentas. Para esse controle, deixe a propriedade de identificação definida como a configuração padrão de DataGrid1 no painel Properties.

Adicionar o código

Adicione o código para inserir itens do cache, para remover itens do cache e para criar a dependência de cache:
  1. Clique a página .aspx com o botão direito do mouse e, em seguida, clique em View Code para abrir a página code-behind.
  2. Para esse exemplo, certifique-se que o System.Data.SqlClient , System.Data e namespaces System.Web.Caching serão adicionados ao espaço para nome listando na página code-behind. Se você usar o Visual Studio. NET para criar o formulário da Web, seu espaço para nome listando no código - behind de página será semelhante à seguinte:
    using System;
    using System.Collections;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Web;
    using System.Web.SessionState;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.HtmlControls;
    using System.Data.SqlClient;
    using System.Web.Caching;
    						
    Observação : você receberá avisos se tanto o espaço para nome não estiver listado, ou se uma lista redundante de um espaço para nome existe.
  3. Na guia modo de exibição Design , clique duas vezes o botão CreateNewOrCached para abrir o evento CreateNewOrCached_Click na página code-behind.
  4. Adicione o seguinte código ao evento CreateNewOrCached_Click :
    private void CreateNewOrCached_Click(object sender, System.EventArgs e) {
    	//Attempt to create a DataSet object from the cache entry with the key "CacheDataSetEmployees" 
    	object CacheDataSetEmployees = (DataSet)Cache.Get("CacheDataSetEmployees");
    	
            //Check to see if the object is null
    	if(CacheDataSetEmployees == null)
    	{
    	     //Set a value for the cache entry that will serve as the 
    	     //key for the dependency to be created on
    	     Cache["SqlPubsEmployees"] = "SomeValue";
    
    	     //Create the array of cache key item names
    	     string[] keys = new String[1];
    	     keys[0] = "SqlPubsEmployees";
    				
    	     DataSet ds = new DataSet();
    	     //Create the connection and pass in the ConnectionString
    	    SqlConnection MySqlConn = new SqlConnection("Server=kronicas17;Trusted_Connection=Yes;initial catalog=pubs");
    	     //Create the Data Adapter and pass in the command text and connection to use
    	     SqlDataAdapter MySda = new SqlDataAdapter("SELECT TOP 10 * FROM Employee", MySqlConn);
    	     //Populate the DataTable "Employees" in the DataSet
    	     MySda.Fill(ds,"Employee");
    	     //Set the DataGrid's DataSource to the "Employee" DataTable
    	     DataGrid1.DataSource = ds.Tables["Employee"];
    				
    	     //Create a dependency object referencing the array of cachekeys (keys)
    	     CacheDependency MyDependency = new CacheDependency(null, keys);
    	     //Insert the DataSet into Cache with a dependency on MyDependency
    	     Cache.Insert("CacheDataSetEmployees", ds, MyDependency);
    				MySqlConn.Close();
    				
    	     //Display the status of the DataSet/Cache Entry
    	     CacheStatus.Text = "New Version Created";
    	}
    	else
    	{
    	     //Display the status of the DataSet/Cache Entry
    	     CacheStatus.Text = "Cached Version Used";
    	     //Set the DataSource to the cached version of the DataSet
    	     DataGrid1.DataSource = CacheDataSetEmployees;
            }
            //Bind the DataGrid to the DataSource
    	DataGrid1.DataBind();
    }
    						
    Observação : talvez seja necessário modificar ConnectionString no código dessa etapa para funcionar corretamente com o SQL server. Para que o código funcione corretamente, você precisará ter o banco de dados pubs do SQL Server instalado.
  5. Na guia modo de exibição Design para a página DataCacheSample.aspx, clique duas vezes no botão Remover para abrir o evento Remove_Click na página code-behind.
  6. Adicione o seguinte código ao evento Remove_Click :
    private void Remove_Click(object sender, System.EventArgs e)
         {
    	//Remove the cache item listed in the cachekeys array (keys)
    	Cache.Remove("SqlPubsEmployees"); 	//Display the status of the cache item
    	CacheStatus.Text = "Cache Item Removed";
         }
    					
  7. Adicione o seguinte elemento para o arquivo Web.config <system.web> entre </system.web>:
    <identity impersonate=?true? />
    
  8. No menu arquivo , clique em Salvar tudo para salvar o formulário da Web e outros arquivos de projeto associado.
  9. No menu Build no IDE do Visual Studio .NET, clique em criar para criar o projeto.

Executando o código

  1. Para executar o código, clique com o botão direito do mouse na página DataCacheSample.aspx no Solution Explorer e, em seguida, clique em View in Browser .
  2. Clique no botão CreateNewOrCached ; o rótulo CacheStatus deve exibir "Nova versão criado" e o controle DataGrid é preenchido.

    Observações :
    • A configuração Nova criação de versão para o rótulo CacheStatus é o resultado da chave de cache CacheDataSetEmployees que é não ainda referência um item de cache válido ao inserir o evento. Nesse caso, o DataSet é criado, o controle DataGrid é vinculado ao DataSet e o DataSet é inserido em cache usando a chave de cache "CacheDataSetEmployees" .
    • Da etapa anterior você deve também observou a criação do novo objeto CacheDependency chamado MyDependency . O objeto MyDependency está listado como a dependência para o item CacheDataSetEmployees quando ele é adicionado ao cache usando o método Inserir . É importante observar que, enquanto este exemplo demonstra baseada em chave dependências, você pode usar outros tipos de dependência com cache critérios, como arquivos ou um carimbo de hora, bem.
  3. Clique no botão CreateNewOrCached novamente. O rótulo CacheStatus exibe "Versão em cache," que indica que o DataSet em cache foi usado. Você pode verificar que se trata dados armazenados em cache por modificar um dos registros no banco de dados pubs exibidos usando o SQL Query Analyzer ou outra ferramenta. Depois de modificar o registro, clique no botão CreateNewOrCached novamente. Observe que as alterações feitas não serão exibidas. Clique em Remover e, em seguida, clique em CreateNewOrCached novamente para ver as alterações feitas no banco de dados.
  4. Clique no botão Remover . O rótulo CacheStatus exibe "Removido de entrada de cache". O item de cache com a chave "SqlPubsEmployees" é removido usando o método Cache.Remove no evento Remove_Click . Porque você listado matriz (que contém o nome de chave de cache do item removido) com MyDependency ao criá-la, o item "CacheDataSetEmployees" é removido porque você criou usando o método Insert e referenciando MyDependency como seu parâmetro de dependência.
  5. Clique no botão CreateNewOrCached novamente. O rótulo CacheStatus exibe a mensagem "Versão novo criado" porque o DataSet foi criado com base no fato de que ele não existia no cache quando o evento foi acionado.
  6. Você também pode perceber que o controle DataGrid é exibido como preenchida com dados mesmo após o item DataSet é removido do cache. Isso é o resultado da propriedade EnableViewState sendo definida como True por padrão. Isso permite que o estado do controle para ser mantida, e isso não está relacionado a manipulação de entrada de cache no código. Para uma representação mais visual do estado do controle em cada fase, você pode definir EnableViewState para False .
Observação : em relação a esse exemplo, em uma situação real, a matriz de chave de cache (a matriz de chaves no código de exemplo) pode armazenar chaves de cache para outras tabelas ou outro cache itens para que se um desses itens alterar, a entrada de cache ( CacheDataSetEmployees neste exemplo) para o item que foi criado com essa dependência poderia ser removida do cache também. Você pode, em seguida, agir conforme necessário, usando retornos de chamada; para obter mais informações sobre retornos de chamada, consulte a seção "Referências" deste artigo.

Solução de problemas

  • Os nomes de chaves que estão listados na matriz de chaves de cache devem ser associados a itens do cache real. Se não forem, o item para o qual a dependência é usada não é retido corretamente no cache. Um exemplo disso seria se a matriz de chaves no código de exemplo mantido outro elemento de matriz e o elemento foi configurado para um nome de chave de cache inválido.
  • A matriz de chaves de cache não tem nenhum significado específico até que ele seja usado com um objeto CacheDependency .
  • Se você inserir um item em cache com nenhuma dependência ou outra expiração, o tempo de execução controla quando o item é removido do cache.

Referências

Para obter mais informações sobre como usar CacheItemRemovedCallback delegar, consulte o seguinte site:
Delegar CacheItemRemovedCallback
http://msdn2.microsoft.com/en-us/library/system.web.caching.cacheitemremovedcallback(vs.71).aspx
Observação : O delegado CacheItemRemovedCallback define um método de retorno de chamada para notificar os aplicativos quando um item em cache é removido do cache.

Para obter mais informações sobre a classe CacheDependency , consulte o seguinte site:
Classe CacheDependency
http://msdn2.microsoft.com/en-us/library/system.web.caching.cachedependency(vs.71).aspx
Observação : A classe CacheDependency controla as dependências de cache, que podem ser arquivos, diretórios ou chaves a outros objetos no cache do aplicativo.

Para obter mais informações sobre as várias opções de cache que estão disponíveis para o ASP.NET, consulte a seguinte documentação do SDK do Microsoft .NET Framework:
Adicionando itens ao cache
http://msdn.microsoft.com/en-us/library/cc511535.aspx
Para obter informações adicionais sobre as várias opções de cache que estão disponíveis para o ASP.NET, clique nos números abaixo para ler os artigos na Base de dados de Conhecimento da Microsoft:
305140Guia ASP.NET
307225INFO: ASP.NET Caching Overview

Propriedades

ID do artigo: 308147 - Última revisão: terça-feira, 28 de agosto de 2007 - Revisão: 2.8
A informação contida neste artigo aplica-se a:
  • Microsoft ASP.NET 1.1
  • Microsoft ASP.NET 1.0
  • Microsoft Visual C# .NET 2003 Standard Edition
  • Microsoft Visual C# .NET 2002 Standard Edition
Palavras-chave: 
kbmt kbcaching kbdatabase kbhowtomaster KB308147 KbMtpt
Tradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 308147

Submeter comentários

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com