COMO: Implementar com chave de dependências de cache de dados no ASP.NET utilizando o Visual C# .NET

Traduções de Artigos Traduções de Artigos
Artigo: 308147 - Ver produtos para os quais este artigo se aplica.
Expandir tudo | Reduzir tudo

Nesta página

Sumário

Este artigo demonstra como implementar dados colocação em cache utilizando dependências baseado em chaves numa aplicação do Microsoft ASP.NET. O exemplo que é apresentado neste artigo cria e insere um objecto DataSet a cache com uma dependência definir no outro item de entrada de cache referenciando a chave. Para obter exemplos de colocação em cache com hora ou dependências com base em ficheiros de dados, consulte a secçã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 uma aplicação Web do ASP.NET

Utilizar o Microsoft Visual C# .NET para criar uma Web do Microsoft ASP.NET aplicação chamada DataCacher:
  1. Abra o Microsoft Visual Studio .NET.
  2. No menu ficheiro , aponte para Novo e, em seguida, clique em projecto .
  3. Na caixa de diálogo Novo projecto , clique em Visual C# Projects em Project Types e, em seguida, clique em ASP.NET Web Application em modelos .
  4. Na caixa localização , escreva DataCacher como o nome de projecto, substituindo o nome WebApplication# predefinido no caminho de URL. Se estiver a utilizar o servidor local, pode deixar o nome do servidor como http://localhost, que define a localização para http://localhost/DataCacher.

Criar o formulário da Web

Nota : O código é incluído nesta secção é explicado mais detalhadamente na secção "Com o código".

Para criar os dados em cache exemplo:
  1. Adicione um novo formulário da Web com o nome DataCacheSample.aspx para o projecto no Visual Studio. NET:
    1. Clique com o botão direito do rato no nó de projecto no Solution Explorer.
    2. Clique em Adicionar e, em seguida, clique em Adicionar novo formulário de Web .
    3. Nome DataCacheSample.aspx o formulário Web.
    4. Clique em Abrir .
  2. No separador Vista de estrutura para o formulário da Web no Visual Studio .NET IDE (integrated development environment), adicione um botão de formulário Web à página:
    1. Utilize uma operação de arrastar e largar para mover um botão de formulário da Web para a página.
    2. Clique para seleccionar o novo botão. Altere a propriedade ID para CreateNewOrCached e, em seguida, altere a propriedade de texto para Em Criar nova ou cache .
  3. Adicione um segundo botão de formulário Web:
    1. Utilize uma operação de arrastar e largar para mover outro formulário da Web botão para a página da caixa de ferramentas.
    2. Clique para seleccionar o novo botão. Altere a propriedade ID para Remover e, em seguida, altere a propriedade Text Remover .
  4. Adicione um rótulo de formulário Web:
    1. Utilize uma operação de arrastar e largar para mover um rótulo de formulário da Web para a página da caixa de ferramentas.
    2. Clique para seleccionar o novo nome. Altere a propriedade ID para CacheStatus e, em seguida, desmarque a propriedade de texto .
  5. Utilize uma operação de arrastar e largar para mover um controlo de formulário Web DataGrid para a página da caixa de ferramentas. Para este controlo, deixe a propriedade ID definida como a predefinição da DataGrid1 no painel de propriedades.

Adicionar o código

Adicione o código para inserir itens de cache, para remover itens de cache e criar a dependência da cache:
  1. Clique com o botão direito do rato na página .aspx e, em seguida, clique em Ver código para abrir a página de código.
  2. Para neste exemplo, certifique-se de que System.data.SqlClient System.data e os espaços de nomes System.Web.Caching são adicionados ao espaço de nomes na página de código subjacente a listar. Se utilizar o Visual Studio. NET para criar o formulário da Web, o espaço de nomes listar no código - atrás 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;
    						
    Nota : será de receber avisos se o espaço de nomes não estiver listado ou se uma lista redundante de um espaço de nomes existe.
  3. No separador vista estrutura , faça duplo clique no botão CreateNewOrCached para abrir o evento CreateNewOrCached_Click na página de código.
  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();
    }
    						
    Nota : poderá ter de modificar ConnectionString no código deste passo para funcionar correctamente com o SQL server. O código funcione correctamente, tem de ter a base de dados pubs do SQL Server instalado.
  5. No separador de vista de estrutura da página DataCacheSample.aspx, faça duplo clique no botão Remover para abrir o evento Remove_Click na página de código.
  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 elemento seguinte ao ficheiro Web.config <system.web> entre </system.web>:
    <identity impersonate=?true? />
    
  8. No menu ficheiro , clique em Guardar tudo para guardar o formulário da Web e os outros ficheiros de projecto associado.
  9. No menu criar em Visual Studio .NET IDE, clique em criar para criar o projecto.

Com o código

  1. Para executar o código, com o botão direito do rato 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 deverá apresentar "Nova versão criado" e o controlo DataGrid é preenchido.

    notas :
    • A definição de Nova versão criado para o rótulo CacheStatus é o resultado da chave de cache CacheDataSetEmployees é não ainda referir um item de cache válido quando introduzir o evento. Neste caso, o DataSet é criada, o controlo DataGrid é dependente de DataSet e DataSet é introduzido no cache utilizando a chave de cache "CacheDataSetEmployees" .
    • No passo anterior, deve também reparou a criação do novo objecto CacheDependency denominado MyDependency . O objecto MyDependency é listado como a dependência para o item CacheDataSetEmployees quando é adicionado à cache utilizando o método de Inserir . É importante ter em atenção que, enquanto este exemplo demonstra baseado em chaves dependências, pode utilizar outros tipos de dependência baseadas em cache critérios, tais como ficheiros ou uma marca de hora, bem.
  3. Clique no botão CreateNewOrCached novamente. O nome CacheStatus apresenta "Versão em cache", o que indica que o DataSet em cache foi utilizado. Pode verificar que se trata dados em cache por modificar um dos registos apresentados na base de dados pubs utilizando o SQL Query Analyzer ou outra ferramenta. Depois de modificar o registo, clique novamente no botão CreateNewOrCached . Note que as alterações efectuadas não são apresentadas. Clique em Remover e, em seguida, clique em CreateNewOrCached novamente para ver as alterações efectuadas à base de dados.
  4. Clique no botão Remover . O nome CacheStatus apresenta "Entrada de cache removido". O item de cache com a chave "SqlPubsEmployees" é removido utilizando o método Cache.Remove no evento Remove_Click . Porque listado matriz (que contém o nome de chave de cache do item removido) com MyDependency quando é criada, o item "CacheDataSetEmployees" é removido porque criado utilizando o método Inserir e referindo MyDependency como respectivo parâmetro de dependência.
  5. Clique no botão CreateNewOrCached novamente. A etiqueta CacheStatus apresenta a mensagem "Nova versão criado" porque foi criado o DataSet based de facto já não existia em cache quando o evento foi accionado.
  6. Também poderá verificar que o controlo DataGrid é apresentado como povoada com dados mesmo após o item de DataSet a partir da cache. Este é o resultado da propriedade EnableViewState a ser definida como true por predefinição. Isto permite que o estado do controlo para ser mantida e este não está relacionado com a manipulação de entrada de cache no código. Para obter uma representação visual mais do estado do controlo em cada fase, pode definir EnableViewState como Falso .
Nota : relativamente neste exemplo, numa situação real, a matriz de chave de cache (a matriz de chaves no código de exemplo) pode conter cache chaves de outras tabelas ou outro cache itens para que se um desses itens alterar, a entrada da cache ( CacheDataSetEmployees neste exemplo) para o item foi criado com esta dependência teria de ser removida da cache bem. Pode, em seguida, funcionam conforme necessário utilizando chamadas de retorno; para obter mais informações sobre chamadas de retorno, consulte a secção "Referências" neste artigo.

Resolução de problemas

  • Os nomes de chaves indicadas na matriz de chaves de cache devem ser associados a itens de cache real. Se não estiverem, o item para o qual a dependência é utilizada não é mantido correctamente na cache. Um exemplo desta situação seria se a matriz de chaves no código de exemplo utilizado outro elemento de matriz e o elemento foi definido como um nome de chave de cache inválido.
  • A matriz de chaves de cache tem sem significado específico até que é utilizado com um objecto CacheDependency .
  • Se inserir um item para a cache com nenhuma dependência ou outra expiração, controla o tempo de execução quando o item é removido do cache.

Referências

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

Para mais informações sobre a classe CacheDependency , consulte o seguinte Web site da Microsoft:
Classe CacheDependency
http://msdn2.microsoft.com/en-us/library/system.web.caching.cachedependency(vs.71).aspx
Nota : A classe CacheDependency controla as dependências de cache, que podem ser ficheiros, directórios ou chaves para outros objectos na cache da aplicação.

Para mais informações sobre as várias opções colocação em cache disponíveis para o ASP.NET, consulte a documentação do Microsoft .NET Framework SDK seguinte:
Adicionar itens para a cache
http://msdn.microsoft.com/en-us/library/cc511535.aspx
Para obter informações adicionais sobre as várias cache opções que estão disponíveis para o ASP.NET, clique números de artigo existentes abaixo para visualizar os artigos na base de dados de conhecimento da Microsoft:
305140Plano de ASP.NET
307225INFO: Descrição geral de colocação em cache da ASP.NET

Propriedades

Artigo: 308147 - Última revisão: 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 revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes 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