Freigeben über


Zwischenspeichern in .NET Framework-Anwendungen

Mit der Zwischenspeicherung können Sie Daten im Arbeitsspeicher speichern, um schnell darauf zugreifen zu können. Wenn erneut auf die Daten zugegriffen wird, können Anwendungen die Daten aus dem Cache abrufen, anstatt sie aus der ursprünglichen Quelle abzurufen. Dies kann die Leistung und Skalierbarkeit verbessern. Darüber hinaus stellt das Zwischenspeichern Daten zur Verfügung, wenn die Datenquelle vorübergehend nicht verfügbar ist.

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

Hinweis

In .NET Framework 3.5 und früheren Versionen hat ASP.NET eine In-Memory-Cacheimplementierung im System.Web.Caching Namespace bereitgestellt. In früheren Versionen von .NET Framework war die Zwischenspeicherung nur im System.Web Namespace verfügbar und erforderte daher eine Abhängigkeit von ASP.NET Klassen. Im .NET Framework 4 enthält der System.Runtime.Caching Namespace APIs, die sowohl für Web- als auch nicht-Webanwendungen entwickelt wurden.

Zwischenspeichern von Daten

Sie können Informationen mithilfe von Klassen im System.Runtime.Caching Namespace zwischenspeichern. Die Zwischenspeicherungsklassen in diesem Namespace stellen die folgenden Features bereit:

  • Abstrakte Typen, die die Grundlage zum Erstellen von benutzerdefinierten Cacheimplementierungen bieten.

  • Eine konkrete In-Memory-Objektcacheimplementierung.

Die abstrakte Basiszwischenspeicherungsklasse (ObjectCache) definiert die folgenden Zwischenspeicherungsaufgaben:

  • 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 In-Memory-Objektcacheimplementierung der ObjectCache Klasse. Sie können die Klasse für die MemoryCache meisten Zwischenspeicherungsaufgaben verwenden.

Hinweis

Die MemoryCache Klasse wird für das ASP.NET Cacheobjekt modelliert, das im System.Web.Caching Namespace definiert ist. Daher ähnelt die interne Zwischenspeicherungslogik der Logik, die in früheren Versionen von ASP.NET bereitgestellt wurde.

Ein Beispiel für das Zwischenspeichern in einer WPF-Anwendung finden Sie unter Walkthrough: Caching Application Data in a WPF Application Application.

Zwischenspeichern in ASP.NET Anwendungen

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

Hinweis

Wenn Ihre Anwendung auf .NET Framework 3.5 oder früher ausgerichtet ist, müssen Sie die Cacheklassen verwenden, die System.Web.Caching im Namespace definiert sind. Weitere Informationen finden Sie unter ASP.NET Caching Overview.

Hinweis

Wenn Sie neue Anwendungen entwickeln, empfiehlt es sich, die MemoryCache Klasse zu verwenden. Die API, die im System.Runtime.Caching-Namespace bereitgestellt wird, ist wie die API, die im Cache-Namespace bereitgestellt wird. Daher ist die API vertraut, wenn Sie die Zwischenspeicherung in früheren Versionen von ASP.NET verwendet haben. Ein Beispiel für die Verwendung der Zwischenspeicherung in ASP.NET Anwendungen finden Sie unter Exemplarische Vorgehensweise: Zwischenspeichern von Anwendungsdaten in ASP.NET.

Ausgabe-Cache

Um Anwendungsdaten manuell 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 mithilfe von Einstellungen in der Web.config Datei konfigurieren. Weitere Informationen finden Sie unter outputCache-Element zum Zwischenspeichern (ASP.NET Einstellungsschema).

mit ASP.NET können Sie die Ausgabezwischenspeicherung erweitern, indem Sie benutzerdefinierte Ausgabecacheanbieter erstellen. Mithilfe von benutzerdefinierten Anbietern können Sie zwischengespeicherte Inhalte mit anderen Speichergeräten wie Datenträgern, Cloudspeicher und verteilten Cachemodulen speichern. Um einen benutzerdefinierten Ausgabecacheanbieter zu erstellen, erstellen Sie eine Klasse, die von der OutputCacheProvider Klasse abgeleitet wird, und konfigurieren die Anwendung für die Verwendung des benutzerdefinierten Ausgabecacheanbieters.

Zwischenspeichern in WCF-REST-Diensten

Für WCF-REST-Dienste ermöglicht es Ihnen das .NET-Framework, die Vorteile des deklarativen Ausgabecachings zu nutzen, das in ASP.NET verfügbar ist. Auf diese Weise können Sie Antworten aus Ihren WCF-REST-Dienstvorgängen zwischenspeichern. Wenn ein Benutzer eine HTTP GET-Anforderung an einen Dienst sendet, der für die Zwischenspeicherung konfiguriert ist, sendet ASP.NET die zwischengespeicherte Antwort zurück, und die Dienstmethode wird nicht aufgerufen. Nach Ablauf des Caches wird die Dienstmethode aufgerufen, und die Antwort wird erneut zwischengespeichert, wenn ein Benutzer eine HTTP GET-Anforderung sendet.

Mit .NET Framework können Sie auch das zwischenspeichern von bedingten HTTP GET implementieren. In REST-Szenarien wird häufig eine bedingte HTTP GET-Anforderung 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 ist so konzipiert, dass sie erweiterbar ist. Mit der ObjectCache Klasse können Sie eine benutzerdefinierte Cacheimplementierung 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). Sie können dies tun, um eine Cacheklasse zu erstellen, die einen anderen Speichermechanismus verwendet, oder wenn Sie eine präzise Kontrolle über Cachevorgänge wünschen.

Gehen Sie wie folgt vor, um die Zwischenspeicherung zu erweitern:

Weitere Informationen finden Sie im Blog von Scott Guthrie im Eintrag Extensible Output Caching mit ASP.NET 4 (VS 2010 und .NET Framework 4.0 Series ).

Siehe auch