NCache 4.4 - Documentação On-line

Configurando o provedor de leitura

 
As etapas a seguir devem ser seguidas para configurar e implementar o provedor Read-Through com NCache.
 
Implementando a interface IReadThruProvider
 
Implementar IReadThruProvider, adicione as seguintes referências no assembly do provedor.
 
Alachisoft.NCache.Runtime.dll
 
Crie uma classe que implemente Alachisoft.NCache.Runtime.DatasourceProviders.IReadThruProvider interface e implantá-lo usando NCache Comer. NCache framework usará internamente essa classe para carregar os dados da fonte de dados configurada se ela não estiver disponível no cache.
 
Interface IReadThru
 
Vazio público Init(System.Collections.Idicionário parâmetros, TangacacheId);
Vazio público Descarte();
Vazio público CarregarFromSource(corda chave, Fora ProviderCacheItemcacheItem);
Público Dicionário<corda, ProviderCacheItem> LoadFromSource(corda[] chaves);
 
Vogal
Descrição
Nisso
Este método será chamado por NCache framework na inicialização do cache. O usuário pode usar este método para realizar tarefas como alocar recursos, adquirir conexões de fonte de dados etc. Este método recebe como entrada a instância IDictionay de argumentos passados ​​para o provedor através NCache Manger (configurações de configuração). Ele permite que você passe a lista de parâmetros para o provedor. Esses parâmetros podem ser utilizados de várias maneiras. Por exemplo, a cadeia de conexão de uma fonte de dados pode ser especificada como um parâmetro. Assim, ele fornece uma maneira flexível de alterar as configurações da fonte de dados enquanto a configura sem alterações de código.
O outro argumentCacheId especifica o nome do cache para o qual a leitura está configurada.
CarregarFromSource
Este método será chamado por NCache framework se o item necessário não for encontrado no armazenamento em cache e NCache tem que carregá-lo através da fonte de dados configurada. Este método deve conter lógica para carregar um objeto da fonte de dados configurada. O primeiro argumento "chave" refere-se à chave do item necessário. O segundo argumentoéum parâmetro out do tipo Provider CacheItem que necessita de o instanciar juntamente com as propriedades requeridas Aqui poderáassociar várias propriedades ao item carregado antes de o devolver ao NCache estrutura. Certifique-se de que o Provider CacheItem.Value atribuído neste método seja "Serializável" porque NCache posteriormente salvará esse item no armazenamento em cache para atender a solicitações futuras.
Ao implementar esse método, você deve cuidar da segurança do thread de código, pois várias solicitações Get podem acessar esse método para leitura. Também tome cuidado para evitar cenários que causam loops infinitos recursivos, por exemplo, neste método, uma solicitação Get com leitura no mesmo identificador de cache causará recursão infinita.
Observação: No caso de Get, LoadFromSource(chave de string, fora ProviderCacheItemcacheItem) será chamado do provedor enquanto para ObterBulk, LoadFromSource(string[] chaves)
será chamado para carregar itens da fonte de dados.
dispor
Este método será chamado por NCache framework quando o cache para. Você pode usar esse método para executar tarefas como liberar recursos, descartar conexões etc. Aqui você pode liberar os recursos relacionados à fonte de dados para utilização efetiva dos recursos.
 
 
In NCache, os provedores Read-Through são configurados no nível de cache, ou seja, para caches em cluster, todos os nós conterão configurações de provedor e seus assemblies implantados.
 
 
Código de exemplo para IReadThruProvider
 
// Contém métodos usados ​​para ler um objeto por sua chave da fonte de dados mestre.
// Contém métodos usados ​​para ler um objeto por sua chave da fonte de dados mestre.
aula pública Provedor SampleReadThru : IReadThruProvider
{
privado SQLConnection _conexão;
//Executa tarefas como alocar recursos ou adquirir conexões
 
vazio público Iniciar(Idicionário parâmetros, corda cacheId)
{
objeto connStringObject = parâmetros["constringir"];
corda connString = connStringObject == nulo ? "" : connStringObject.ToString();
if (connString! = "")
            _conexão = novo SQLConnection(conString);
tentar
{
  _conexão.Abrir();
}
captura (Exceção ex)
{
//trata a exceção
}
}
 
//Responsável por carregar um item da fonte de dados externa.
vazio público CarregarFromSource(corda chave, Fora ProviderCacheItem cacheItem)
{
//onde LoadFromDataSource é o método fictício para carregar dados da fonte de dados.
objeto valor = LoadFromDataSource(chave);
        itemdecache = novo ProviderCacheItem(valor);
        cacheItem.ResyncItemOnExpiration = verdadeiro;
}
 
//Executa tarefas associadas à liberação, liberação ou redefinição de recursos.
vazio público Dispose ()
{
if (_conexão != nulo)
            _conexão.Fechar();
}
 
//Responsável por carregar em massa de itens da fonte de dados externa.
público Dicionário<corda, ProviderCacheItem>CarregarDaFonte(corda[] chaves)
{
  tentar
  {
Dicionário<corda, ProviderCacheItem> dicionário = novo Dicionário<corda, ProviderCacheItem> ();
corda chave = nulo;
para (int índice = 0; índice
      {
          chave = chaves[índice];
//onde LoadFromDataSource é o método fictício para carregar dados da fonte de dados.
          dicionário.Adicionar(chave, novo ProviderCacheItem(LoadFromDataSource(chave)));
      }
retorno dicionário;
  }
        captura (Exceção exp)
  {
Lançar;
  }
}
objeto privado LoadFromDataSource(corda chave)
{
objeto objeto recuperado = nulo;
// carrega o item de sua fonte de dados e preenche o objeto recuperado
retorno objeto recuperado;
}
}
 
Após a implementação e implantação deste provedor, ligações diretas podem ser feitas para NCache para obter os itens necessários. Se o item não estiver disponível localmente no armazenamento de cache, NCache usará o método "LoadFromSource" na classe de acesso a dados especificada para carregar itens da fonte de dados.
 
Usando Read-Through com Operações Básicas
 
Esta seção explicará o uso do provedor de leitura após configurá-lo e implantá-lo. NCache oferece suporte a vários provedores de leitura com um aplicativo.
 
Adicione os seguintes namespaces no aplicativo:
 
utilização Alachisoft.NCache.Web.Caching;
utilização Alachisoft.NCache.Runtime.DatasourceProviders;
utilização Alachisoft.NCache.Tempo de execução;
 
NCache fornece Alachisoft.NCache.Web.Caching.DSReadOption enum para especificar a opção Read thru nas APIs.
Vários provedores de leitura podem ser configurados por meio de NCache. O provedor de leitura padrão será chamado se o nome do provedor específico não for mencionado por meio da API. Você também pode usar provedores diferentes do padrão usando sobrecargas de APIs específicas do provedor.
 
  • Obter método
 
Vogal
Descrição
Pegue(corda chave, DSReadOption dsReadOption)
Obter item do cache e usa o provedor padrão
Pegue(corda  chave, corda Nome do provedor, DSReadOption dsReadOption)
Obter item do cache e usa o provedor especificado
 
Produto product =nulo;
tentar
{
corda chave = "Produto: 1001";
objeto dados = cache.Get(chave, DSReadOption.ReadThru);
if (dados!= nulo)
    {
        produto = (Produto)dados;
    }
}
captura (OperationFailedException exp)
{
//trata a exceção }
 
  • Método em massa
 
Para melhor compreensão da revisão dessas operações  Operações em Massa. Nesse cenário, use a seguinte API
Vogal
Descrição
Idicionário ObterBulk(corda[] chaves, DSReadOption dsReadOption)
Obtenha itens em massa do cache e use o provedor padrão
Idicionário ObterBulk(corda[] chaves, corda Nome do provedor, DSReadOption dsReadOption)
Obtenha itens em massa do cache e use o provedor especificado
 
tentar
{
Tanga[] chaves = { "Produto: 1001", "Produto: 1002", "Produto: 1003", "Produto: 1004" };
Idicionário resultSet = cache.GetBulk(chaves, DSReadOption.ReadThru);
//IDictionary contém chaves e valores em cache
}
captura (OperationFailedException exp)
{
//trata a exceção
}
 
  • Usando o provedor de leitura com CacheItem
 
Para este cenário, use a seguinte API.
Vogal
Descrição
Item de cache GetCacheItem(corda chave DSReadOption dsReadOption)
Obter CacheItem do cache e usa o provedor padrão
GetCacheItem(corda chave, corda Nome do provedor, DSReadOption dsReadOption)
Obter CacheItem do cache e usa o provedor especificado
 
corda chave = "Produto: 1001";
Produto produto=nulo;
 
tentar
{
Item de cache dados = cache.GetCacheItem(chave, DSReadOption.ReadThru);
if (dados!= nulo)
    {
        produto = (Produto)dados.Valor;
    }
}
captura (Exceção exp)
{
//trata a exceção
}
 
Observe que você pode especificar o provedor padrão através do NCManager ou através do client.ncconf colocado na pasta de configuração do NCache diretório de instalação. Se o nome do provedor não for fornecido na API e no client.ncconf, o provedor padrão será usado automaticamente.
 
<esconderijo id="meu cache" provedor de leitura padrão="nomedoprovedor padrão" ID de cache do cliente="" cliente-cache-syncmode="otimista" provedor de gravação padrão="" balanceamento de carga="Verdadeiro" contexto de tempo de execução do servidor="NCACHE">
  ...
</esconderijo>
 
CacheInitParam também pode ser usado para especificar provedores.
NCache registra os avisos no log de eventos do aplicativo em caso de uma exceção durante o carregamento dos assemblies.
 
 
 
Veja também