Entity Framework Second Level Cache mit NCache

Entity Framework ist ein beliebtes objektrelationales Mapping-Framework für .NET von Microsoft. Es ermöglicht Ihnen, mit relationalen Daten über Domänenobjekte zu arbeiten. Und es macht den Großteil des Datenbankpersistenzcodes überflüssig, den Sie sonst schreiben müssten.

Die Beliebtheit von Entity Framework hat dazu geführt, dass es häufig in Anwendungen mit hohem Transaktionsvolumen eingesetzt wird, bei denen Leistung und Skalierbarkeit von entscheidender Bedeutung sind. In den meisten Fällen mit hohem Transaktionsaufkommen wird die Datenbank jedoch schnell zu einem Engpass. Dies liegt daran, dass Sie im Gegensatz zur Anwendungsschicht, bei der Sie je nach Bedarf weitere Anwendungsserver hinzufügen können, bei der Datenbankschicht nicht dasselbe tun können.

Der einzige Weg, diese Skalierbarkeit zu erreichen, ist mit einem verteilten Cache NCache. NCache ist ein extrem schneller und skalierbarer verteilter Cache für .NET-Anwendungen. Damit können Sie Anwendungsdaten zwischenspeichern, teure Datenbankfahrten reduzieren und die Leistung und Skalierbarkeit Ihrer Anwendung verbessern.

Obwohl Entity Framework kein Cache-Anbietermodell der zweiten Ebene (2. Ebene) bereitstellt, NCache hat einen benutzerdefinierten ADO.NET-Anbieter für Entity Framework implementiert, mit dem NCache kann Ergebnisse von Entity Framework-Abfragen einstecken und zwischenspeichern. Dadurch können Sie den verteilten Cache in Ihrer Entity Framework-Anwendung verwenden, ohne Codeänderungen vorzunehmen.

Dokumentation anzeigen

Warum verwenden NCache als Entity Framework Second Level Cache?

Wenn Ihre Entity Framework-Anwendung in einer Umgebung mit mehreren Servern ausgeführt wird, benötigen Sie einen verteilten Cache als Entity Framework Second Level Cache. Und, NCache ist ein idealer Entity Framework Second Level Cache für Konfigurationen mit mehreren Servern und Sie sollten ihn aus folgenden Gründen verwenden:

  1. NCache ist extrem schnell: NCache ist ein extrem schneller verteilter Cache und ermöglicht Reaktionszeiten von unter einer Millisekunde.
  2. NCache bietet lineare Skalierbarkeit: NCache wird nie zu einem Skalierbarkeitsengpass. Damit können Sie dem Cache-Cluster Server hinzufügen, um eine lineare Skalierbarkeit zu erreichen und extreme Transaktionslasten zu bewältigen.
  3. Die Cache-Größe kann unendlich wachsen: NCache Bietet Cache-Partitionierung und bündelt dafür den Speicher aller Cache-Server. Sie können also den Cache-Speicher vergrößern, indem Sie einfach weitere Server zum Cache-Cluster hinzufügen.
  4. NCache repliziert Daten intelligent: NCache ermöglicht Ihnen die intelligente Replikation des Caches ohne Leistungseinbußen. Sie verlieren also keine Cache-Daten, selbst wenn ein Cache-Server ausfällt.
  5. NCache bietet Ihnen 100 % Betriebszeit: NCache verfügt über einen selbstheilenden dynamischen Cache-Cluster ohne Single Point of Failure. Infolge, NCache ermöglicht Ihnen das Hinzufügen oder Entfernen von Cache-Servern zur Laufzeit, ohne Ihre Anwendung oder den Cache anzuhalten.

Verwenden Sie die NCache als Entity Framework Second Level Cache ohne Programmierung

Das Beste an der Verwendung NCache mit Entity Framework ist, dass Ihrerseits keine Programmierung erforderlich ist. Sie ändern einfach die Konfigurationsdateien Ihrer Anwendung und geben sie an NCache als Ihr Second Level Cache Anbieter. Hier ist ein Beispiel für app.config-Änderungen:

<interceptors>
	<interceptor type="Alachisoft.NCache.Integrations.EntityFramework.Caching.EFCommandInterceptor, 
	                   Alachisoft.Integrations.EntityFramework.CachingProvider" />
</interceptors>

Verwenden Sie den Analysemodus und den Caching-Modus

Da NCache Der Entity Framework Second Level Cache-Anbieter fügt sich als benutzerdefinierter ADO.NET-Anbieter ein und ermöglicht es Ihnen, ihn im Analysemodus auszuführen, in dem er alle verschiedenen Abfragen protokolliert, die Ihre Anwendung an Entity Framework ausgibt. Diese Abfragen werden zusammen mit der Anzahl der Aufrufe dieser Abfrage in diesem Analysemodus in einer Datei protokolliert. Unten ist ein Beispiel:

<analysis-report>
<!--Call-count = 21-->
 <query query-text="" ["SELECT FROM Products"] | 
        [stored-procedure-name = ""] 
        caching = "true"
        expiration-type="absolute" | 
        sliding = "" 
        expiration-time="180"
        dbsyncdependency = "true"/>
</analysis-report>

Auf diese Weise können Sie bestimmen, welche Abfragen Sie wie lange zwischenspeichern möchten. Sie können auch die Datenbanksynchronisierung für einige oder alle Ihrer Abfragen angeben.

NCache Funktionen für den Second-Level-Cache von Entity Framework

Durch Einstecken NCache Entity Framework Second Level Cache Anbieter durch app.config-Änderungen erhalten Sie einen verteilten Cache auf Unternehmensebene für Ihre Anwendung. Hier sind einige Funktionen NCache bietet für Entity Framework-Apps.

  1. Cache mit Datenbank synchronisieren: Einige Daten im Cache können ohne Wissen oder Beteiligung Ihrer Anwendung in der Datenbank geändert werden. Und für diese Daten können Sie die entsprechenden Klassen für die Datenbanksynchronisierungsfunktion angeben NCache. Dies erlaubt NCache um dann eine Verbindung zur Datenbank herzustellen, Datenänderungen zu überwachen und dann den Cache automatisch zu aktualisieren, um sicherzustellen, dass die Daten im Cache immer mit der Datenbank synchronisiert sind. NCache stellt SqlDependency für SQL Server, OracleDependency für Oracle und DbDependency für alle OLEDB-kompatiblen Datenbanken bereit.
  2. Absolutes Ablaufdatum: Absolutes Ablaufdatum in NCache wird für jedes zwischengespeicherte Element separat angegeben und ist ein Datum-Uhrzeit-Wert NCache Der Artikel läuft automatisch ab. Für Entity Framework: NCache fordert Sie auf, einen „Intervall“-Wert anzugeben, und verwendet dann die Formel „Now() + Intervall“, um den Datum-Uhrzeit-Wert für den absoluten Ablauf zu berechnen.
  3. Gleitender Ablauf: Ablaufdatum einschieben NCache wird für jedes zwischengespeicherte Element separat angegeben und ist ein Intervallwert. NCache Läuft das zwischengespeicherte Element ab, wenn es in diesem Zeitraum weder abgerufen noch aktualisiert wurde. Sie können dieses Intervall durch angeben NCache Konfigurationsdatei des Entity Framework Second Level Cache-Anbieters.
  4. Kompakte Serialisierung: Immer wenn ein .NET-Objekt in einem Out-of-Process- oder verteilten Cache zwischengespeichert wird, muss es zuerst serialisiert werden. Und die reguläre .NET-Serialisierung ist langsam, da sie zur Laufzeit .NET Reflection verwendet. NCache bietet Ihnen die Möglichkeit, Ihre Kurse anzumelden NCache und NCache generiert Serialisierungscode, wenn Ihre Anwendung eine Verbindung zum Cache herstellt. NCache Kompiliert diesen Code dann im Speicher und verwendet ihn für die Serialisierung. Dies ist fast zehnmal schneller als die normale .NET-Serialisierung. Und Sie können diese Funktion mit Entity Framework verwenden. Registrieren Sie einfach Ihre Entity Framework-Entitätsklassen bei NCache für kompakte Serialisierung.

Die richtigen NCache Direkt aus Entity Framework-Anwendungen

Obwohl, mit NCache Da Entity Framework Second Level Cache sehr schnell und einfach ist, steht Ihnen nur eine begrenzte Anzahl an Funktionen zur Verfügung NCache Merkmale. Der Grund dafür ist, dass NCache ist durch die Tatsache gebunden, dass es als benutzerdefinierter ADO.NET-Anbieter eingebunden ist und auf SQL-Abfrageebene verarbeiten muss. Es gibt zahlreiche NCache Funktionen, die Sie nicht verwenden können, wenn Sie sich entscheiden, sie zu verwenden NCache als Entity Framework Second Level Cache Provider.

Die Alternative für Sie ist die Verwendung NCache direkt aus Ihrer Entity Framework-Anwendung heraus, indem Sie Folgendes erstellen NCache API-Aufrufe wie bei allen anderen Nicht-Entity Framework .NET-Anwendungen. Obwohl für diesen Weg ein geringer Programmieraufwand erforderlich ist, könnten Sie zu dem Schluss kommen, dass die Vorteile den zusätzlichen Programmieraufwand überwiegen.

NCache Funktionen, die im Cache der zweiten Ebene von Entity Framework fehlen

Unten finden Sie eine Liste von Funktionen, die Sie vermissen würden, wenn Sie es als Entity Framework Second Level Cache verwenden würden, im Gegensatz zu seiner Verwendung NCache direkt aus Ihrer Bewerbung.

  1. Massenoperationen
  2. Cache-Abhängigkeiten
    • Schlüsselbasiert
    • Dateibasiert
    • Maßgeschneidert
  3. Gruppen und Untergruppen
  4. Schlüsselwörter
  5. Benannte Tags
  6. Object Query Language (OQL) und LINQ-basierte Suchen
  7. Sperren und Entsperren von zwischengespeicherten Elementen
  8. Versionierung von Cache-Elementen
  9. Streaming-API
  10. Durchlesen, Durchschreiben und Zurückschreiben
  11. Ereignisbenachrichtigungen
    • Artikelbasiert (aktualisieren und entfernen)
    • Allgemeiner Zweck (Hinzufügen, Aktualisieren, Entfernen)
    • Maßgeschneidert
  12. Kontinuierliche Abfrage
  13. Gemeinsame Nutzung von Laufzeitdaten
  14. Cache-Loader

Was macht man als nächstes?

© Copyright Alachisoft 2002 - Alle Rechte vorbehalten NCache ist eine eingetragene Marke der Diyatech Corp.