Com o AppFabricCom a retirada do mercado de .NET, a indústria .NET continua à procura de um cache distribuído na memória para emergir como concorrente. Embora algumas alternativas tenham surgido, nenhuma oferece uma solução tão completa quanto NCache.
NCache é um cache distribuído na memória de código aberto que fornece aos usuários um cache distribuído extremamente rápido e linearmente escalável que armazena em cache os dados do aplicativo e reduz as dispendiosas viagens ao banco de dados. NCache é uma mercadoria de mercado comprovada e antecede o App Fabric em cerca de cinco anos. E há inúmeras vantagens que esperam por você no final do seu processo de migração, conforme discutimos a seguir.
NCache Adicionar ao carrinho AppFabric Terminar AppFabric Migração
1. Mantendo o Cache atualizado
A sincronização de banco de dados é um recurso crucial para um cache distribuído na memória de qualidade. Como você geralmente encontra caches distribuídos na camada intermediária entre aplicativos e um banco de dados, há uma alta probabilidade de que os dados sejam atualizados diretamente no banco de dados ou no cache de forma independente. Esse problema exige um mecanismo para evitar dados obsoletos.
Portanto, esses caches distribuídos devem permitir que você especifique uma relação ou dependência entre o item armazenado em cache e seu item correspondente no banco de dados. Assim, sempre que o banco de dados muda, suas alterações são refletidas no cache por meio de invalidação ou atualizações.
Por exemplo, NCache fornece SqlDependência suporte para SQL Server. Você pode criar uma dependência de um item em cache com um conjunto de dados baseado em instrução SQL. Sempre que esse conjunto de dados específico é alterado ou modificado, o SQL Server envia um evento para NCache, e o item de cache é invalidado. Por exemplo, CacheItem item = newCacheItem(myObject);
1 2 3 4 5 6 7 8 9 10 11 |
// Get orders against customerID from DB var order = FetchOrderByCustomerID("ALFKI"); // Generate a unique cache key for the order string key = $"Order:{order.OrderID}"; CacheItem item = new CacheItem(order); // Create SQL query to select the data from the database string query = "SELECT CustomerID, Address, City FROM dbo.Customers WHERE CustomerID = 'ALFKI';"; //Specify the database connection string and the query to create and set SQLCacheDependency. item.Dependency = new SqlCacheDependency(dbConnString, query); // Insert the item into the cache cache.Insert(key, item); |
Assim, o cache será sincronizado com o banco de dados. NCache também suporta o mesmo recurso com Oracle, OleDB e até mesmo fontes de dados não relacionais como FileSystems por meio do nosso Armazenamento de persistência.
NCache Adicionar ao carrinho Oracle Database OleDBGenericName
2. Consultas SQL
Dado NCache, é fácil considerar manter todos os seus dados no cache. Infelizmente, isso apresentaria um pequeno problema, pois a pesquisa só é possível por meio de seus dados em cache se a busca por meio da chave for a única opção. NCache oferece uma solução para isso através de consultas SQL. Isso é possível por indexação atributos de objetos .NET selecionados e realizando consultas de pesquisa.
1 2 3 4 5 6 7 8 9 |
//string query = "SELECT * FROM FQN.Product WHERE UnitsInStock > ?"; var queryCommand = new QueryCommand(query); queryCommand.Parameters.Add("UnitsInStock",0); ICacheReader reader = cache.ExecuteReader(queryCommand); while (reader.Read()) { string ID = reader.GetValue("ProductID"); string Name = reader.GetValue("ProductName"); } |
Para melhorar a experiência dos desenvolvedores, NCache também permite atribuir grupos, Tag e tags nomeadas para seus itens em cache que você pode usar posteriormente em suas consultas SQL para buscar itens rapidamente.
3. Consulta LINQ
Do mesmo modo, NCache oferece aos usuários a oportunidade de percorrer seus dados por meio de consultas LINQ, conforme demonstrado abaixo.
1 2 3 4 |
IQueryable products = new NCacheQuery(cache); var result = from prod in products where prod.ProductID > 1001 select prod; |
Além disso, você pode personalizar ainda mais essas consultas usando os lógico, Agregação e Wildcard Operações
NCache Adicionar ao carrinho Consultas SQL Consultas LINQ
4. Código do lado do servidor
Muitas vezes, os caches distribuídos apenas ajudam os aplicativos a buscar dados do banco de dados e inseri-los no cache. No entanto, outra abordagem é onde seu aplicativo delega essa responsabilidade ao cache distribuído. Essencialmente, quando seu aplicativo solicita um item do cache, ele determina se o item em questão existe no cache ou não e carrega os dados correspondentes do banco de dados. Esse recurso é chamado Leia. NCache oferece um semelhante escrita opção, que permite operações de gravação diretamente na fonte de dados por meio do cache.
E NCache'S funcionalidade do lado do servidor vai muito mais longe com o Cache Loader & Refresher. Esse recurso superou com sucesso a lacuna de desempenho inicial que todos os caches enfrentam ao inicializar, pois estão vazios para começar. Você pode usar o carregador para identificar os dados necessários e pré-carregá-los. A atualização simplesmente existe para garantir que esses dados não fiquem obsoletos.
NChttps://www.alachisoft.com/resources/docs/ncache/prog-guide/server-side-api-programming.htmlche também fornece uma estrutura MapReduce completa, na qual você pode realizar análises em seus dados armazenados em cache e produzir insights acionáveis em tempo real. O código MapReduce é escrito em .NET e, portanto, é executado dentro do NCache processo.
NCache Adicionar ao carrinho Reduzir mapa NCache Carregador e Atualizador
5. Cache do cliente (próximo ao cache)
A Cache de cliente, é local para seu servidor web ou aplicativo e permite armazenar em cache os dados usados com frequência dentro do mesmo processo ou máquina servidora. Portanto, um Cache de Cliente é um cache de afinidade, dando ao seu aplicativo um aumento de desempenho adicional ao diminuir os custos de largura de banda da rede sem comprometer a integridade dos dados. Um Client Cache funciona com todos NCache aglomerado topologias de cache (Cache espelhado, particionado e de réplica de partição).
Ele faz isso permanecendo conectado ao cluster de cache e sincronizando ao replicar as alterações no cluster de cache principal. A diferença entre AppFabric cache local e o NCache cache do cliente é isso AppFabric O cache local é autônomo e não cria uma conexão com o cluster principal.
6. Suporte a vários datacenters
A replicação de WAN é outro recurso crítico para caches distribuídos na memória de alto calibre que AppFabric falta. É mais útil com data centers distribuídos geograficamente – para recuperação de desastres ou balanceamento de carga para tráfego localizado.
NCache fornece topologias de ponte para lidar com latências de WAN. o NCache ponte replica e mantém a consistência em diferentes caches em todo o mundo. Você tem a opção de manter seu cluster de cache passivo para imitar uma réplica de cluster para recuperação de desastres ou sincronizar dois caches separados em data centers diferentes. Os dados são replicados de forma assíncrona em conexões de Internet seguras.
NCache Adicionar ao carrinho Cache de cliente Replicação de WAN
7. Cluster Dinâmico
Como tudo AppFabric os clientes provavelmente estão cientes, seu cluster não é totalmente dinâmico. A dependência da Microsoft em sua regra de maioria dos hosts principais significa um cluster muito falível, que cai facilmente se até mesmo um dos hosts principais cair. Esses nós de host principais também se assemelham à arquitetura mestre e escravo e também não são totalmente ponto a ponto.
Alternativamente, NCache is altamente dinâmico e permite adicionar ou remover servidores de cache em tempo de execução sem interrupção. Os dados são rebalanceados automaticamente (ou transferido de estado) em tempo de execução sem qualquer degradação de desempenho. NCache os clientes mantêm automaticamente o canal de comunicação com os servidores de cache, independentemente do estado do servidor. Além disso, seus clusters de cache garantem a execução das operações do cliente mesmo quando o balanceamento de dados (transferência de estado) está em andamento.
Isso significa que nenhum nó mestre ou escravo existe no cluster. Existe um nó coordenador primário que é o nó sênior. E se ele ficar inativo, o próximo nó mais sênior se tornará automaticamente o coordenador primário. Tudo isso sem qualquer interrupção nas operações do cliente.
8. Integrações de terceiros
Como se não bastasse, NCache oficialmente oferece suporte a provedores para diferentes bibliotecas de terceiros importantes, como:
- Entity Framework Core Cache
- Cache do Entity Framework
- Cache de 2º nível do NHibernate
- Estado de Sessão ASP e Cache de Estado de Visualização
Conclusão
Em suma, NCache apresenta uma ampla gama de recursos que as empresas usam e exigem em seus aplicativos .NET. Particularmente, aqueles que AppFabric não chegaram a introduzir em nenhum ponto de seu ciclo de vida. Então, se você quiser dar o seu melhor e investir em um sistema de cache distribuído que realmente atenda às suas necessidades, baixe NCache para uma migração indolor.
NCache Adicionar ao carrinho Baixar NCache Comparação de edições