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 anzeigenWenn 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:
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>
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.
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.
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.
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.