La memorizzazione nella cache distribuita sta diventando molto popolare tra gli sviluppatori di applicazioni ad alta transazione perché migliora le prestazioni e la scalabilità dell'applicazione. E questa popolarità significa che gli sviluppatori memorizzano nella cache sempre più dati che vogliono anche essere in grado di cercare proprio come sono in grado di cercare nei database relazionali.
Ma una delle principali limitazioni di molte cache distribuite è che forniscono solo un'interfaccia Hashtable (chiave, valore) all'utente. Ciò significa che per recuperare qualsiasi elemento memorizzato nella cache, devi conoscerne la chiave. Ma nella vita reale questo non è sempre possibile e in molti casi è necessario cercare i dati in base ad altri criteri di ricerca (es. “Dammi tutti i clienti di New York”). Quindi, se non sei in grado di cercare in una cache distribuita, è probabile che memorizzi nella cache solo i dati di cui conosci sempre le chiavi. E questo ti impedisce di memorizzare nella cache molti dati che altrimenti aumenterebbero davvero le prestazioni e la scalabilità della tua applicazione.
Fortunatamente, NCache ti fornisce un molto potente Funzionalità di query simile a SQL (chiamato Object Query Language o OQL) per consentire di cercare nella cache in base agli attributi dell'oggetto e non solo alle chiavi. E, per le applicazioni .NET, NCache fornisce l'integrazione LINQ e consente di eseguire ricerche nella cache tramite LINQ.
LINQ è un insieme di estensioni di .NET Framework che comprendono operazioni di query, set e trasformazione integrate nel linguaggio. Inoltre, collega il mondo degli oggetti e il mondo dei dati e rende la ricerca molto semplice e gestibile. Inoltre, LINQ ti consente di integrare il tuo archivio di dati su di esso.
NCache fornisce un plug-in LINQ. Quindi, ora emetti query LINQ dalla tua applicazione .NET e dietro le quinte questa query viene eseguita su un NCache cache distribuita e un set di risultati viene restituito all'applicazione. NCache si integra con LINQ implementando una classe denominata “NCacheQuery”, che implementa ulteriormente l'interfaccia denominata “IQueryable” fornita da .NET framework. Con questa integrazione puoi eseguire query LINQ sugli elementi memorizzati nella cache.
Ecco un esempio di codice sorgente di 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); } } } } |
In sintesi, eseguire query sulle raccolte in memoria non era così facile e gestibile prima di LINQ e NCache dà Integrazione LINQ in modo tale da non dover modificare il codice, tutto ciò che devi fare è aggiungere un nuovo riferimento all'assembly e uno spazio dei nomi nella tua applicazione.
Quindi, scarica una versione di prova di 60 giorni completamente funzionante di NCache Enterprise e provalo tu stesso.