Caching in .NET Framework-Anwendungen
Mithilfe der Zwischenspeicherung können Daten für einen schnellen Zugriff im Arbeitsspeicher gespeichert werden. Wenn erneut auf die Daten zugegriffen wird, können Anwendungen die Daten aus dem Cache anstatt aus der ursprünglichen Quelle abrufen. Dadurch kann die Leistung und Skalierbarkeit verbessert werden. Zudem bietet die Zwischenspeicherung den Vorteil, dass Daten auch zur Verfügung stehen, wenn die Datenquelle vorübergehend nicht verfügbar ist.
.NET Framework stellt Funktionen für die Zwischenspeicherung bereit, die Sie verwenden können, um die Leistung und die Skalierbarkeit von Windows-Clients und Serveranwendungen zu verbessern. Dies schließt auch ASP.NET mit ein.
Hinweis |
---|
In .NET Framework 3.5 und früheren Versionen hat ASP.NET eine Cacheimplementierung im Arbeitsspeicher im System.Web.Caching-Namespace bereitgestellt.In früheren Versionen von .NET Framework war das Zwischenspeichern nur im System.Web-Namespace verfügbar und erforderte daher eine Abhängigkeit von ASP.NET-Klassen.In .NET Framework 4 enthält der System.Runtime.Caching-Namespace APIs, die für Web- und für Nicht-Webanwendungen geeignet sind. |
Zwischenspeichern von Daten
Sie können Informationen zwischenspeichern, indem Sie Klassen im System.Runtime.Caching-Namespace verwenden. Die Klassen für die Zwischenspeicherung in diesem Namespace stellen folgende Funktionen bereit:
Abstrakte Typen, die die Grundlage für das Erstellen benutzerdefinierter Cacheimplementierungen bilden.
Eine konkrete Objektcacheimplementierung im Arbeitsspeicher.
Die abstrakte Basisklasse für die Zwischenspeicherung (ObjectCache) definiert die folgenden Aufgaben für die Zwischenspeicherung:
Erstellen und Verwalten von Cacheeinträgen.
Angeben von Laufzeit- und Entfernungsinformationen.
Initiieren von Ereignissen, die als Reaktion auf Änderungen in den Cacheeinträgen ausgelöst werden.
Die MemoryCache-Klasse ist eine Objektcacheimplementierung im Speicher der ObjectCache-Klasse. Sie können die MemoryCache-Klasse für die meisten Aufgaben der Zwischenspeicherung verwenden.
Hinweis |
---|
Die MemoryCache-Klasse ist dem ASP.NET-Cacheobjekt nachempfunden, das im System.Web.Caching-Namespace definiert ist.Daher ist die interne Logik vergleichbar mit der Zwischenspeicherungslogik, die in früheren Versionen von ASP.NET bereitgestellt wurde. |
Ein Beispiel zum Verwenden der Zwischenspeicherung in einer WPF-Anwendung finden Sie unter Exemplarische Vorgehensweise: Zwischenspeichern von Anwendungsdaten in einer WPF-Anwendung.
Zwischenspeicherung in ASP.NET-Anwendungen
Die Zwischenspeicherungsklassen im System.Runtime.Caching-Namespace stellen Funktionen zum Zwischenspeichern von Daten in ASP.NET bereit.
Hinweis |
---|
Wenn für die Anwendung als Zielversion .NET Framework 3.5 oder älter festgelegt wurde, müssen Sie die Zwischenspeicherungsklassen verwenden, die im System.Web.Caching-Namespace definiert sind.Weitere Informationen finden Sie unter Übersicht über das Zwischenspeichern in ASP.NET. |
Hinweis |
---|
Wenn Sie neue Anwendungen entwickeln, wird empfohlen, die MemoryCache-Klasse zu verwenden.Die API, die im System.Runtime.Caching-Namespace bereitgestellt wird, gleicht der API im Cache-Namespace.Daher wird Ihnen die API vertraut sein, wenn Sie die Zwischenspeicherung bereits in früheren Versionen von ASP.NET verwendet haben.Ein Beispiel zur Verwendung der Zwischenspeicherung in ASP.NET-Anwendungen finden Sie unter Exemplarische Vorgehensweise: Zwischenspeichern von Anwendungsdaten in ASP.NET. |
Ausgabecache
Um manuell Anwendungsdaten zwischenzuspeichern, können Sie die MemoryCache-Klasse in ASP.NET verwenden. ASP.NET unterstützt auch die Ausgabezwischenspeicherung, die die generierte Ausgabe von Seiten, Steuerelementen und HTTP-Antworten im Arbeitsspeicher speichert. Sie können die Ausgabezwischenspeicherung deklarativ auf einer ASP.NET-Webseite oder über die Einstellungen in der Datei Web.config konfigurieren. Weitere Informationen finden Sie unter outputCache-Element für caching (ASP.NET-Einstellungsschema).
Mit ASP.NET können Sie die Ausgabezwischenspeicherung erweitern, indem sie benutzerdefinierte Ausgabecacheanbieter erstellen. Wenn Sie benutzerdefinierte Anbieter verwenden, können Sie die zwischengespeicherten Inhalte auf anderen Speichergeräten speichern, z. B. auf Festplatten, in einem Cloud-Speicher oder mithilfe verteilter Cachemodule. Um einen benutzerdefinierten Ausgabecacheanbieter zu erstellen, erstellen Sie eine Klasse, die von der OutputCacheProvider-Klasse abgeleitet ist, und konfigurieren die Anwendung so, dass sie den benutzerdefinierten Ausgabecacheanbieter verwendet.
Zwischenspeicherung in WCF REST-Diensten
Bei WCF REST-Diensten können Sie mit .NET Framework die Vorteile der deklarativen Ausgabezwischenspeicherung nutzen, die in ASP.NET verfügbar ist. Auf diese Weise können Sie Antworten der WCF REST-Dienstvorgänge zwischenspeichern. Wenn ein Benutzer eine HTTP GET-Anforderung an einen Dienst sendet, der für eine Zwischenspeicherung konfiguriert ist, sendet ASP.NET die zwischengespeicherte Antwort zurück, und die Dienstmethode wird nicht aufgerufen. Sobald der Cache abgelaufen ist, wird die Dienstmethode erneut aufgerufen und die Antwort erneut zwischengespeichert, wenn ein Benutzer das nächste Mal eine HTTP GET-Anforderung sendet.
Mit .NET Framework können Sie auch eine bedingte HTTP GET-Zwischenspeicherung implementieren. In REST-Szenarien werden bedingte HTTP GET-Anforderungen häufig von Diensten verwendet, um eine intelligente HTTP-Zwischenspeicherung zu implementieren, wie in der HTTP-Spezifikation beschrieben. Weitere Informationen finden Sie unter Cacheunterstützung für WCF-Web-HTTP-Dienste.
Erweitern der Zwischenspeicherung in .NET Framework
Die Zwischenspeicherung in .NET Framework wurde so entworfen, dass Erweiterungen möglich sind. Die ObjectCache-Klasse ermöglicht es Ihnen, auch eine benutzerdefinierte Cacheimplementierung zu erstellen. Diese Klasse stellt Member bereit, die für alle verwalteten Anwendungen verfügbar sind, einschließlich Windows Forms, Windows Presentation Foundation (WPF) und Windows Communications Foundation (WCF). Möglicherweise möchten Sie eine Cacheklasse erstellen, die einen anderen Speichermechanismus verwendet oder eine präzise Kontrolle der Cachevorgänge gestattet.
Zum Erweitern der Zwischenspeicherung können Sie wie folgt vorgehen:
Erstellen Sie eine benutzerdefinierte Klasse, die von der ObjectCache-Klasse abgeleitet ist, und stellen Sie dann eine benutzerdefinierte Cacheimplementierung in der abgeleiteten Klasse bereit.
Erstellen Sie eine Klasse, die von der MemoryCache-Klasse abgeleitet ist, und bearbeiten oder erweitern Sie die abgeleitete Klasse. Ein Beispiel hierzu finden Sie unter Caching Application Data by Using Multiple Cache Objects in an ASP.NET Application.
Erstellen Sie eine Klasse, die von der OutputCacheProvider-Klasse abgeleitet ist, und konfigurieren Sie die Anwendung so, dass sie den benutzerdefinierten Ausgabecacheanbieter verwendet.
Weitere Informationen finden Sie im Eintrag Extensible Output Caching with ASP.NET 4 (VS 2010 and .NET 4.0 Series) im Blog von Scott Guthrie.
Siehe auch
Aufgaben
Exemplarische Vorgehensweise: Zwischenspeichern von Anwendungsdaten in einer WPF-Anwendung
Referenz
Weitere Ressourcen
Exemplarische Vorgehensweise: Zwischenspeichern von Anwendungsdaten in ASP.NET