La mise en cache distribuée devient très populaire parmi les développeurs d'applications à transactions élevées, car elle améliore les performances et l'évolutivité de votre application. Et cette popularité signifie que les développeurs y mettent en cache de plus en plus de données qu'ils souhaitent également pouvoir rechercher, tout comme ils peuvent rechercher des bases de données relationnelles.
Mais, une limitation majeure de nombreux caches distribués est qu'ils ne vous fournissent qu'une interface Hashtable (clé, valeur). Cela signifie que pour que vous puissiez récupérer n'importe quel élément mis en cache, vous devez connaître sa clé. Mais dans la vraie vie, ce n'est pas toujours possible et dans de nombreux cas, vous devez rechercher des données en fonction d'autres critères de recherche (par exemple, "Donnez-moi tous les clients de New York"). Ainsi, si vous n'êtes pas en mesure de rechercher un cache distribué, vous ne mettrez probablement en cache que les données dont vous connaissez toujours les clés. Et cela vous évite de mettre en cache beaucoup de données qui, autrement, amélioreraient vraiment les performances et l'évolutivité de votre application.
Heureusement, NCache vous offre un très puissant Capacité d'interrogation de type SQL (appelé Object Query Language ou OQL) pour vous permettre de rechercher dans le cache en fonction des attributs de l'objet et pas seulement des clés. Et, pour les applications .NET, NCache fournit l'intégration LINQ et vous permet de rechercher le cache via LINQ.
LINQ est un ensemble d'extensions du .NET Framework qui englobent les opérations de requête, de définition et de transformation intégrées au langage. Et, il relie le monde des objets et le monde des données et rend la recherche très facile et gérable. De plus, LINQ vous permet d'y intégrer votre propre stockage de données.
NCache fournit un plug-in LINQ. Ainsi, vous émettez maintenant des requêtes LINQ à partir de votre application .NET et en arrière-plan, cette requête s'exécute sur un NCache cache distribué et un jeu de résultats est renvoyé à votre application. NCache est intégré à LINQ en implémentant une classe nommée "NCacheQuery », qui implémente en outre l'interface appelée « IQueryable » fournie par .NET framework. Grâce à cette intégration, vous pouvez exécuter des requêtes LINQ sur des éléments mis en cache.
Voici un exemple de code source de requête 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); } } } } |
En résumé, l'interrogation des collections en mémoire n'était pas aussi facile et gérable avant LINQ et NCache donne Intégration LINQ de manière à ce que vous n'ayez pas à modifier le code, il vous suffit d'ajouter une nouvelle référence d'assembly et un espace de noms dans votre application.
Alors, téléchargez une version d'essai complète de 60 jours de NCache Enterprise et essayez-le par vous-même.