Entity Framework ist eine objektrelationale Mapping-Engine, die eine Abstraktion von der zugrunde liegenden relationalen Datenbank ermöglicht und somit die Entwicklung erheblich vereinfacht. Aufgrund dieser Vorteile werden immer mehr datenzentrierte und hochtransaktionale Anwendungen und Dienste mit Entity Framework entwickelt.
Allerdings sind diese Anwendungen mit hohem Datenverkehr mit Skalierbarkeitsproblemen konfrontiert. Obwohl die Ebene der Anwendungsebene skalierbar ist, können ihre Datenbank oder ihr Datenspeicher nicht mit der wachsenden Anzahl an Transaktionen mithalten, die auf sie zukommen.
Dies ist, wo ein verteilter Cache kommt ins Spiel, weil es Ihnen ermöglicht, Daten zwischenzuspeichern und die teuren Datenbankfahrten zu reduzieren, die zu Skalierbarkeitsengpässen führen. Entity Framework bietet jedoch keine sofort einsatzbereite Lösung, mit der Sie verteilten Cache in Ihrer Anwendung verwenden können. Es gibt jedoch zwei Möglichkeiten, wie Sie verteilten Cache in Ihre Entity Framework-Anwendung integrieren können. Eine besteht darin, Ihren Entity Framework-Anwendungscode zu ändern und direkte API-Aufrufe an den verteilten Cache durchzuführen. Zweitens besteht die Möglichkeit, einen verteilten Cache zu verwenden, der einen benutzerdefinierten ADO.NET-Anbieter implementiert hat, der das Caching hinter den Kulissen integriert.
Entity Framework hat öffentliches Anbietermodell für ADO.NET Anbieter wo Sie Anbieter für 3 schreiben könnenrd Parteidatenbanken. NCache hat a implementiert Benutzerdefinierter Entity Framework ADO.NET-Anbieter über einen eigenen Cache, über den er verteilte Cache-Aufrufe durchführen kann NCache API. Dieser benutzerdefinierte Entity Framework ADO.NET-Anbieter fängt alle Datenbankabfrageaufrufe ab und legt die Ergebnismengen dieser Abfragen in einem verteilten Cache ab. Dann, NCache Der benutzerdefinierte Entity Framework-Anbieter fängt alle nachfolgenden Abfrageaufrufe ab und gibt die Ergebnisse einfach aus seinem verteilten Cache zurück, anstatt diesen teuren Datenbankausflug zu machen. Wenn der Ergebnissatz für eine Abfrage nicht im verteilten Cache vorhanden ist, wird die Abfrage für die Datenbank ausgeführt und der Ergebnissatz wird dann im verteilten Cache abgelegt.
Und, NCache Der benutzerdefinierte Entity Framework-Anbieter muss außerdem sicherstellen, dass die Daten im verteilten Cache immer konsistent und mit der Datenbank synchronisiert sind. Und dafür NCache verwendet SqlCacheDependency in .NET bereitgestellt. SqlCacheDependeny registriert eine SQL-Abfrage bei SQL Server. Wenn also eine Zeile im durch diese Abfrage dargestellten Datensatz in der Datenbank geändert wird, sendet SQL Server eine .NET-Ereignisbenachrichtigung an NCache. NCache fängt dieses .NET-Ereignis ab und entfernt die entsprechende Ergebnismenge aus dem verteilten Cache.
Abbildung 1 zeigt, wie NCache Entity Framework Provider wird in eine Entity Framework-Anwendung eingesteckt.
Figure 1 NCache Verwendeter Entity Framework Provider
Sie können integrieren NCache Fügen Sie in nur vier einfachen Schritten einen benutzerdefinierten Entity Framework ADO.NET-Anbieter in Ihre Anwendung ein:
- Standardanbieter ersetzen: Ersetzen Sie den Standardanbieter Ihrer Anwendung durch NCache Entity-Framework-Anbieter in app.config/web.config und .edmx-Datei.
- Registrieren NCache Anbieter: Registrieren Sie Ihre Bewerbung unter NCache Entity Framework-Konfiguration (efcaching.conf). In efcaching.config können Sie ganz einfach Protokollebene, Ablaufrichtlinien usw. für Ihre Entity Framework-Anwendung angeben.
- App im Analysemodus ausführen: Führen Sie Ihre Anwendung im Analysemodus aus. Im Analysemodus NCache Der Entity Framework-Anbieter protokolliert von Ihrer Anwendung ausgeführte Entity Framework-Abfragen sowie deren Häufigkeit. Anhand der Protokolle können Sie Entity Framework-Abfragen untersuchen, die Sie zwischenspeichern möchten.
- App normal ausführen: Wechseln Sie in den Caching-Modus und führen Sie Ihre Anwendung aus.
Daher durch die Verwendung NCache Mit dem Entity Framework-Caching-Anbieter können Sie problemlos lineare Skalierbarkeit erreichen, ohne Ihren Entity Framework-Anwendungscode zu ändern.
Laden Sie also eine voll funktionsfähige 60-Tage-Testversion von herunter NCache Enterprise und probiere es selbst aus.
Ja, es funktioniert mit jedem Entity Framework-Connector-Treiber wie SQL, Oracle, MySQL, PostreSQL usw. NCache Der Caching-Anbieter fungiert zwischen dem ADO.NET-Entity-Framework-Anbieter und dem ursprünglichen Datenanbieter, um die Abfrageantworten zwischenzuspeichern.
Funktioniert dies nur mit SQL Server oder einem beliebigen ENTITY Framework-Connector-Treiber?