Caching in .NET Framework-Anwendungen

Das Zwischenspeichern ermöglicht es Ihnen, Daten für schnellen Zugriff im Arbeitsspeicher zu speichern. Wenn erneut auf die Daten zugegriffen wird, erhalten Anwendungen die Daten aus dem Zwischenspeicher, anstatt sie aus der Originalquelle abzurufen. Dies kann die Leistung und Skalierbarkeit verbessern. Darüber hinaus macht das Zwischenspeichern Daten verfügbar, wenn die Datenquelle vorübergehend nicht verfügbar ist.

.NET Framework bietet Funktionen zum Zwischenspeichern, die Sie verwenden können, um die Leistung und Skalierbarkeit von Windows Client- und Serveranwendungen, einschließlich ASP.NET, zu verbessern.

Hinweis

Ab der .NET Framework-Version 3.5 stellt ASP.NET im Namespace System.Web.Caching eine Implementierung eines In-Memory-Caches zur Verfügung. In früheren Versionen von .NET Framework war die Zwischenspeicherung nur im System.Web-Namespace verfügbar, und erforderte daher eine Abhängigkeit der ASP.NET-Klassen. In .NET Framework 4 enthält der System.Runtime.Caching-Namespace APIs, die für Web- und nicht-Webanwendungen konzipiert sind.

Zwischenspeichern von Daten

Sie können Informationen mithilfe von Klassen im System.Runtime.Caching-Namespace zwischenspeichern. Die zwischenspeichernden Klassen in diesem Namespace stellen die folgenden Features zur Verfügung:

  • Abstrakte Typen, die die Grundlage für das Erstellen von benutzerdefinierten Cache-Implementierungen bereitstellen.

  • Eine konkrete speicherinterne Cache-Implementierung von Objekten.

Die abstrakte zwischenspeichernde Basisklasse (ObjectCache) definiert die folgenden zwischenspeichernden Aufgaben:

  • Erstellen und Verwalten von Cacheeinträgen.

  • Angeben von Ablauf und Entfernung von Informationen.

  • Auslösen von Ereignissen, die als Reaktion auf Änderungen in Cacheeinträgen ausgelöst werden.

Die MemoryCache-Klasse ist eine speicherinterne Cache-Implementierung eines Objekts der ObjectCache-Klasse. Sie können die MemoryCache-Klasse für die meisten Cachingaufgaben verwenden.

Hinweis

Die MemoryCache-Klasse wird für das ASP.NET-Cacheobjekt modelliert, das im System.Web.Caching-Namespace definiert wird. Aus diesem Grund ist die interne Cachinglogik mit der Logik vergleichbar, die in früheren Versionen von ASP.NET bereitgestellt wurde.

Ein Beispiel zum Verwenden der Zwischenspeicherung in WPF-Anwendungen finden Sie unter Exemplarische Vorgehensweise: Zwischenspeichern von Anwendungsdaten in einer WPF-Anwendung.

Zwischenspeichern in ASP.NET-Anwendungen

Die zwischenspeichernden Klassen im System.Runtime.Caching-Namespace bieten Funktionen zum Zwischenspeichern von Daten in ASP.NET.

Hinweis

Wenn die Anwendung auf Versionen bis .NET Framework 3.5 abzielt, müssen Sie die Zwischenspeicherklassen verwenden, die im Namespace System.Web.Caching definiert sind. Weitere Informationen finden Sie unter Übersicht über die ASP.NET-Zwischenspeicherung.

Hinweis

Wenn Sie neue Anwendungen entwickeln, empfehlen wir die Verwendung der MemoryCache-Klasse. Die API, die im System.Runtime.Caching-Namespace bereitgestellt wird, ist wie die API, die im Cache-Namespace bereitgestellt wird. Aus diesem Grund wird Ihnen die API vertraut sein, wenn Sie den Zwischenspeicher bereits in früheren Versionen von ASP.NET verwendet haben. Ein Beispiel zum Verwenden der Zwischenspeicherung in ASP.NET-Anwendungen finden Sie unter Exemplarische Vorgehensweise: Zwischenspeichern von Anwendungsdaten in ASP.NET.

Ausgabezwischenspeicherung

Sie können die MemoryCache-Klasse in ASP.NET verwenden, um manuell Anwendungsdaten zwischenzuspeichern. ASP.NET unterstützt auch das Zwischenspeichern der Ausgabe, das die generierte Ausgabe von Seiten, Steuerelementen und HTTP-Antworten im Arbeitsspeicher speichert. Sie können das Zwischenspeichern der Ausgabe deklarativ in einer ASP.NET-Webseite oder mithilfe von Einstellungen in der Datei „Web.config“ konfigurieren. Weitere Information finden Sie unter OutputCache-Element für Caching (ASP.NET-Einstellungsschema).

Mit ASP.NET können Sie das Zwischenspeichern der Ausgabe durch das Erstellen von benutzerdefinierten Ausgabecacheanbietern erweitern. Indem Sie benutzerdefinierte Anbieter verwenden, können Sie zwischengespeicherte Inhalte mit anderen Speichergeräten wie Festplatten, Cloudspeichern und verteilter Cache-Engines speichern. Erstellen Sie eine Klasse, die aus der OutputCacheProvider-Klasse abgeleitet ist, und konfigurieren Sie die Anwendung zur Verwendung des benutzerdefinierten Ausgabecacheanbieters, um einen benutzerdefinierten Ausgabecacheanbieter zu erstellen.

Zwischenspeichern in WCF REST-Diensten

Durch .NET Framework können Sie für WCF REST-Dienste den deklarativen Ausgabecache nutzen, der nicht 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 den Dienst sendet, der zum Zwischenspeichern konfiguriert ist, sendet ASP.NET die zwischengespeicherte Antwort zurück, und die Dienstmethode wird nicht aufgerufen. Wenn der Cache abgelaufen ist, wird beim nächsten Senden einer HTTP GET-Anforderung durch einen Benutzer die Dienstmethode aufgerufen und die Antwort erneut zwischengespeichert.

Mit .NET Framework können Sie auch den bedingten HTTP GET-Zwischenspeicher implementieren. In REST-Szenarios wird eine bedingte HTTP GET-Anforderung häufig von Diensten verwendet, um die intelligente HTTP-Zwischenspeicherung zu implementieren. Dies ist in der HTTP-Spezifikation beschrieben. Weitere Information finden Sie unter Cacheunterstützung für WCF-Web-HTTP-Dienste.

Erweitern von Caching in .NET Framework

Die Zwischenspeicherung in .NET Framework ist erweiterbar. Mit der ObjectCache-Klasse können Sie eine benutzerdefinierte Cacheimplementierung erstellen. Diese Klasse enthält Elemente, die auf allen verwalteten Anwendungen, einschließlich Windows Forms, Windows Presentation Foundation (WPF) und Windows Communications Foundation (WCF), verfügbar sind. Sie können dies vornehmen, um eine Cacheklasse zu erstellen, die einen anderen Speichermechanismus verwendet, oder wenn Sie eine präzise Kontrolle über Cachevorgänge erhalten möchten.

Zur Erweiterung der Zwischenspeicherung können Sie Folgendes tun:

Weitere Informationen finden Sie im Eintrag Extensible Output Caching with ASP.NET 4 (VS 2010 and .NET Framework 4.0 Series) (Erweiterbare Ausgabezwischenspeicherung in ASP.NET 4 [VS 2010 und .NET Framework 4.0-Serie]) im Blog von Scott Guthries.

Siehe auch