Verteiltes Caching wird bei Entwicklern von Anwendungen mit hoher Transaktionsdichte immer beliebter, da es die Leistung und Skalierbarkeit Ihrer Anwendung verbessert. Und diese Popularität bedeutet, dass Entwickler immer mehr Daten darin zwischenspeichern, die sie auch durchsuchen möchten, genau wie sie in der Lage sind, relationale Datenbanken zu durchsuchen.
Eine große Einschränkung vieler verteilter Caches besteht jedoch darin, dass sie Ihnen nur eine Hashtable-Schnittstelle (Schlüssel, Wert) bereitstellen. Das bedeutet, dass Sie zum Abrufen eines zwischengespeicherten Elements dessen Schlüssel kennen müssen. Aber im wirklichen Leben ist dies nicht immer möglich und in vielen Fällen müssen Sie anhand anderer Suchkriterien nach Daten suchen (z. B. „Geben Sie mir alle Kunden aus New York“). Wenn Sie also keinen verteilten Cache durchsuchen können, werden Sie wahrscheinlich nur Daten zwischenspeichern, deren Schlüssel Sie immer kennen. Und dies verhindert, dass Sie viele Daten zwischenspeichern, die ansonsten die Leistung und Skalierbarkeit Ihrer Anwendung wirklich steigern würden.
Glücklicherweise NCache bietet Ihnen eine sehr mächtige SQL-ähnliche Abfragefunktion (als Object Query Language oder OQL bezeichnet), damit Sie den Cache anhand von Objektattributen und nicht nur anhand der Schlüssel durchsuchen können. Und für .NET-Anwendungen NCache bietet LINQ-Integration und ermöglicht Ihnen, den Cache über LINQ zu durchsuchen.
LINQ ist eine Reihe von Erweiterungen für die .NET Framework die sprachintegrierte Abfrage-, Set- und Transformationsoperationen umfassen. Und es verbindet die Objektwelt und die Datenwelt und macht die Suche sehr einfach und überschaubar. Darüber hinaus können Sie mit LINQ Ihren eigenen Datenspeicher integrieren.
NCache bietet ein LINQ-Plug-in. Sie geben also jetzt LINQ-Abfragen von Ihrer .NET-Anwendung aus und hinter den Kulissen wird diese Abfrage für eine ausgeführt NCache verteilten Cache und eine Ergebnismenge wird an Ihre Anwendung zurückgegeben. NCache ist in LINQ integriert, indem eine Klasse mit dem Namen „NCacheQuery“, die die von bereitgestellte Schnittstelle namens „IQueryable“ weiter implementiert .NET framework. Durch diese Integration können Sie LINQ-Abfragen für zwischengespeicherte Elemente ausführen.
Hier ist ein Quellcodebeispiel für 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); } } } } |
Zusammenfassend lässt sich sagen, dass das Abfragen von In-Memory-Sammlungen vor LINQ und nicht so einfach und überschaubar war NCache gibt LINQ-Integration Damit Sie den Code nicht ändern müssen, müssen Sie lediglich eine neue Assemblyreferenz und einen neuen Namespace in Ihrer Anwendung hinzufügen.
Laden Sie also eine voll funktionsfähige 60-Tage-Testversion von herunter NCache Enterprise und probiere es selbst aus.