O cache distribuído na memória hoje se tornou muito popular para aplicativos executados em um ambiente de vários servidores porque ajuda a melhorar a escalabilidade e o desempenho do aplicativo. Até .NET Framework 3.5 havia o objeto ASP.NET Cache disponível apenas para aplicativos da Web no namespace System.Web.Caching. Mas em .NET Framework 4.0, .NET 4.0 Cache é adicionado no namespace System.Runtime.Caching para todos os tipos de aplicativos .NET. O .NET 4.0 Cache tem funcionalidade semelhante ao ASP.NET Cache. Mas, diferentemente do ASP.NET Cache, ele possui uma classe abstrata ObjectCache que pode ser implementada de maneira personalizada conforme necessário. Assim, em essência, o .NET 4.0 Cache pode ser estendido, o que o ASP.NET Cache não pode. E, MemoryCache é a implementação de cache na memória padrão do .NET 4.0 Cache. Aqui está um exemplo:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
private static ObjectCache cache = MemoryCache.Default; private CacheItemPolicy policy = null; private CacheEntryRemovedCallback callback = null; // Registering callbacks and policies… callback = new CacheEntryRemovedCallback(this.MyCachedItemRemovedCallback); policy = new CacheItemPolicy(); policy.Priority = (MyCacheItemPriority == MyCachePriority.Default) ? CacheItemPriority.Default : CacheItemPriority.NotRemovable; policy.RemovedCallback = callback; HostFileChangeMonitor changeMonitor = new HostFileChangeMonitor(FilePath); policy.ChangeMonitors.Add(changeMonitor); // Add inside cache… cache.Set(CacheKeyName, CacheItem, policy); |
Uma limitação da implementação padrão do Cache .NET 4.0 MemoryCache é que ele é um cache em processo autônomo. Se seu aplicativo .NET for executado em um ambiente de vários servidores, você não poderá usar isso porque precisa de um cache distribuído que possa sincronizar o cache em vários servidores. Mas, felizmente, a arquitetura .NET 4.0 Cache nos permite conectar uma solução de cache distribuído de terceiros e estendê-la.
Para atender a essa necessidade, Alachisoft implementou um provedor de cache .NET 4.0 fácil de usar que pode resolver problemas de sincronização, distribuição e escalabilidade de dados, especialmente no caso de web farm/jardim. Este provedor basicamente integra NCache com .NET 4.0 Cache. NCache é um cache distribuído de nível empresarial muito popular para .NET. Através NCache.NET 4.0 Cache Provider do .NET XNUMX você pode conectar NCache com seu aplicativo para obter os benefícios de um cache distribuído. Deixe-me mostrar como isso pode ser feito facilmente com NCache por alguns passos.
- Crie um cache clusterizado (distribuído) por meio de GUI baseado NCache Gerente. Eu criei um cache clusterizado chamado como “MeuClusterCache".
- Inicie o cache para deixá-lo pronto para uso.
- Adicione referências de Alachisoft.NCachebiblioteca .ObjectCacheProvider para seu aplicativo de “NCacheInstallDir/NCache/integration/DotNet4.0 Provedor de Cache"
- Inclua o seguinte namespace em seu projeto.
1using Alachisoft.NCache.ObjectCacheProvider; - Inicialize seu CacheProvider (herdado de ObjectCache) e passe seu nome de cache para o provedor conforme mostrado abaixo.
1234ObjectCache _cache;string _cacheId = "MyClusterCache" ;_cache = new CacheProvider(_cacheId); - Agora você pode executar todas as operações relacionadas ao cache em seu cache usando os comandos CacheProvider.
Aqui está um exemplo completo do .NET 4.0 estendido para NCache:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
ObjectCache _cache; string _cacheId = "MyClusterCache" ; // Initialize with NCache’s .NET 4.0 Cache Provider. _cache = new CacheProvider(_cacheId); // Registering callbacks and policies… NCacheFileChangeMonitor changeMonitor = new NCacheFileChangeMonitor(fileNames); CacheItemPolicy ciPolicy = new CacheItemPolicy(); ciPolicy.ChangeMonitors.Add(changeMonitor); ciPolicy.RemovedCallback += new CacheEntryRemovedCallback(onCacheEntryRemoved); //Add the dependent items in the cache. _cache.AddItems(ciPolicy, 0, totalKeys); |
NCache implementação do .NET 4.0 Cache também inclui implementação personalizada do ChangeMonitor como NCacheEntradaChangeMonitor, NCacheMonitor de Mudança de Arquivo, NCacheSqlChangeMonitorName e NCacheOracleChangeMonitor para alterações baseadas em entrada, arquivo, SQL e Oracle, respectivamente. Através NCache.NET 4.0 Cache, agora você pode adotar o .NET 4.0 Cache como seu padrão e, ao mesmo tempo, se beneficiar de um cache distribuído de nível empresarial para seus aplicativos .NET executados em um ambiente multi-servidor.
Ei olá!
NCache ObjectCacheProvider para .Net 4.0 Cache foi oficialmente descontinuado e, portanto, o assembly Alachisoft.NCache.ObjectCacheProvider não é mais fornecido com NCache instalação. Isso ocorre porque a funcionalidade Caching Application Block agora está incorporada .NET Framework A biblioteca 4.0 e Enterprise está obsoleta nas versões posteriores ao .Net 5.0. O suporte atual do .NET Caching não vem com um modelo de provedor que limita integrações de terceiros, como NCache conectar.
Você pode usar o NCache cache de objetos (Application data caching) API para armazenar em cache objetos em NCache seguindo as orientações do link abaixo:
https://www.alachisoft.com/resources/docs/ncache/help/basic-cache-operations.html?mw=MjQw&st=MQ==&sct=MA==&ms=QwAAEAAAAAAAAAACASgE
Olá Iqbal,
Estou tentando implementar o código fornecido no blog 'How to Configure .NET 4.0 Cache to use a Distributed Cache?'
Baixei a versão de teste do NCache Enterprise 4.6.
Eu tenho que adicionar referências de Alachisoft.NCachebiblioteca .ObjectCacheProvider para o aplicativo de “NCacheInstallDir/NCache/integration/DotNet4.0 Cache Provider“ mas não consigo ver Alachisoft.NCache.ObjectCacheProvider.dll na pasta de integração no meu diretório de instalação.
Você pode me orientar melhor onde posso encontrar Alachisoft.NCache.ObjectCacheProvider.dll?
Esta funcionalidade está disponível em Ncache 4.6? Se sim, como alcançá-lo?
Espero ouvir de você o mais rápido possível.
Obrigado,
sejal