El almacenamiento en caché distribuido se está volviendo muy popular entre los desarrolladores de aplicaciones de transacciones elevadas porque mejora el rendimiento y la escalabilidad de su aplicación. Y, esta popularidad significa que los desarrolladores están almacenando en caché más y más datos que también quieren poder buscar de la misma manera que pueden buscar en bases de datos relacionales.
Sin embargo, una de las principales limitaciones de muchos cachés distribuidos es que solo le proporcionan una interfaz Hashtable (clave, valor). Esto significa que para recuperar cualquier elemento almacenado en caché, debe conocer su clave. Pero en la vida real, esto no siempre es posible y, en muchos casos, es necesario buscar datos en función de otros criterios de búsqueda (por ejemplo, "Dame todos los clientes de Nueva York"). Por lo tanto, si no puede buscar en un caché distribuido, es probable que solo almacene en caché los datos para los que siempre conoce sus claves. Y esto evita que almacene en caché una gran cantidad de datos que, de otro modo, realmente aumentarían el rendimiento y la escalabilidad de su aplicación.
Afortunadamente, NCache te proporciona una muy poderosa Capacidad de consulta similar a SQL (llamado Lenguaje de consulta de objetos u OQL) para permitirle buscar en la memoria caché en función de los atributos de los objetos y no solo de las claves. Y, para las aplicaciones .NET, NCache proporciona integración con LINQ y le permite buscar en la memoria caché a través de LINQ.
LINQ es un conjunto de extensiones para el .NET Framework que abarcan operaciones de consulta, configuración y transformación integradas en el lenguaje. Y conecta el mundo de los objetos y el mundo de los datos y hace que la búsqueda sea muy fácil y manejable. Además, LINQ le permite integrar su propio almacenamiento de datos.
NCache proporciona un complemento LINQ. Entonces, ahora emite consultas LINQ desde su aplicación .NET y, en segundo plano, esta consulta se ejecuta contra un NCache caché distribuida y se devuelve un conjunto de resultados a su aplicación. NCache se integra con LINQ mediante la implementación de una clase denominada "NCacheQuery”, que además implementa la interfaz llamada “IQueryable” proporcionada por .NET framework. Mediante esta integración, puede ejecutar consultas LINQ en elementos almacenados en caché.
Aquí hay un ejemplo de código fuente de LINQ Query.
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); } } } } |
En resumen, consultar colecciones en memoria no era tan fácil ni manejable antes de LINQ y NCache da Integración LINQ de tal manera que no tenga que cambiar el código, todo lo que necesita hacer es agregar una nueva referencia de ensamblado y un espacio de nombres en su aplicación.
Por lo tanto, descargue una versión de prueba de 60 días totalmente funcional de NCache Enterprise y pruébalo por ti mismo.