Cache Local
NCache oferece suporte a um cache independente sem cluster que reside em um único nó. O cache local é semelhante em recursos aos outros caches clusterizados, ou seja, possui todos os recursos de cache fornecidos em qualquer outra topologia de cache, mas não é escalável ou tolerante a falhas como os caches clusterizados. Por ser um cache de servidor único, sua capacidade transacional não pode ser aumentada adicionando vários servidores. Além disso, ele cria uma única instância de cache (sem backup ou réplica); portanto, se falhar, todos os dados armazenados em cache serão perdidos. Um cache local é adequado para aplicativos com um pequeno número de clientes com baixa atividade ou onde os aplicativos não precisam armazenar em cache grandes quantidades de dados.
Níveis de isolamento no cache local
Um cache local possui dois níveis de isolamento, como segue:
InProc (Em processo)
Este nível de isolamento significa que o cache reside dentro do espaço de memória do aplicativo cliente. Como esse tipo de cache existe dentro do processo da aplicação, o tempo de resposta é mais rápido. No InProc, NCache mantém os dados armazenados em cache como objetos ativos (não em formato serializado), o que reduz o custo de serialização/desserialização. No entanto, tais aplicações podem enfrentar limitações de memória, uma vez que a aplicação e o cache compartilham a mesma memória. Além disso, os dados armazenados em cache, neste caso, não podem ser compartilhados com aplicativos executados fora deste processo.
Como os objetos são armazenados no mesmo espaço de endereço que o cliente de cache, os clientes de cache obtêm a referência aos objetos armazenados em cache em vez de uma cópia. Para aplicativos multithread, onde vários threads modificam o mesmo objeto, essas alterações precisam ser sincronizadas usando várias técnicas de sincronização disponíveis no .NET framework.
Note
Embora os objetos não sejam mantidos em formato serializado nos caches InProc, ainda é necessário que todos os objetos sejam marcados como Serializable
. NCache calcula o tamanho de um objeto serializando os objetos que posteriormente auxiliam no despejo quando necessário.
OutProc (fora de processo)
Este nível de isolamento significa que o cache reside em um processo separado (o NCache processo de serviço) do aplicativo cliente. Vários clientes (locais e remotos) podem se conectar ao mesmo cache para compartilhar dados. A latência, neste caso, é maior que a do cache InProc, devido ao custo de comunicação fora do processo.
O cache local OutProc é adequado para situações em que vários clientes no aplicativo precisam acessar os mesmos dados armazenados em cache. Por exemplo, em um web garden onde cada aplicativo ASP.NET é executado em um processo de trabalho separado, um cache OutProc deve ser usado. Além disso, em aplicativos ASP.NET, usar uma instância de cache InProc não é considerada a melhor opção devido às limitações de memória do processo. No entanto, observe que haverá uma sobrecarga na transferência de dados entre o processo de aplicação e o próprio cache.
Veja também
Topologias de cache
Cluster de cache
Cliente de cache
Cache de cliente
Ponte para replicação WAN