O cache distribuído está se tornando muito popular entre os desenvolvedores de aplicativos de alta transação porque melhora o desempenho e a escalabilidade do seu aplicativo. E, essa popularidade significa que os desenvolvedores estão armazenando em cache cada vez mais dados que também desejam pesquisar, assim como podem pesquisar bancos de dados relacionais.
Mas, uma grande limitação de muitos caches distribuídos é que eles fornecem apenas (chave, valor) interface Hashtable para você. Isso significa que para você buscar qualquer item em cache, você deve conhecer sua chave. Mas na vida real isso nem sempre é possível e, em muitos casos, você precisa pesquisar dados com base em outros critérios de pesquisa (por exemplo, “Dê-me todos os clientes de Nova York”). Portanto, se você não puder pesquisar um cache distribuído, provavelmente armazenará em cache apenas os dados para os quais sempre conhece suas chaves. E isso impede que você armazene em cache muitos dados que, de outra forma, realmente aumentariam o desempenho e a escalabilidade do seu aplicativo.
Felizmente, NCache fornece-lhe um muito poderoso Capacidade de consulta semelhante a SQL (chamado Object Query Language ou OQL) para permitir que você pesquise o cache com base nos atributos do objeto e não apenas nas chaves. E, para aplicativos .NET, NCache fornece integração LINQ e permite pesquisar o cache por meio do LINQ.
LINQ é um conjunto de extensões para o .NET Framework que abrangem operações de consulta, conjunto e transformação integradas à linguagem. Além disso, ele conecta o mundo dos objetos e o mundo dos dados e torna a pesquisa muito fácil e gerenciável. Além disso, o LINQ permite que você integre seu próprio armazenamento de dados a ele.
NCache fornece um plug-in LINQ. Portanto, agora você emite consultas LINQ de seu aplicativo .NET e, nos bastidores, essa consulta é executada em um NCache cache distribuído e um conjunto de resultados é retornado ao seu aplicativo. NCache é integrado ao LINQ implementando uma classe chamada “NCacheQuery”, que implementa ainda mais a interface chamada “IQueryable” fornecida por .NET framework. Por essa integração, você pode executar consultas LINQ em itens armazenados em cache.
Aqui está um exemplo de código-fonte da consulta LINQ.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
namespace NCacheLINQ { class Program { static void Main (string[] args) { IQueryable products = new NCacheQuery (_cache); try { var result1 = from product in products where product.ProductID > 10 select product; if (result1 != null) { foreach (Product p in result1) { Console.WriteLine ("ProductID : " + p.ProductID); } } else { Console.WriteLine ("No record found."); } } catch (Exception) { Console.WriteLine (_error); } } } } |
Em resumo, consultar coleções na memória não era tão fácil e gerenciável antes do LINQ e NCache dá Integração LINQ de forma que você não precise alterar o código, tudo o que você precisa fazer é adicionar uma nova referência de assembly e namespace em seu aplicativo.
Então, baixe um teste de 60 dias totalmente funcional do NCache Enterprise e experimente você mesmo.