Mise en cache dans les applications .NET Framework

La mise en cache vous permet de stocker des données en mémoire pour y accéder rapidement. Quand vous accédez à nouveau aux données, les applications peuvent obtenir les données à partir du cache au lieu de devoir les récupérer à partir de la source d’origine. Cela peut améliorer les performances et la scalabilité. La mise en cache rend également les données disponibles quand la source de données est temporairement indisponible.

Le .NET Framework fournit des fonctionnalités de mise en cache que vous pouvez utiliser pour améliorer les performances et la scalabilité des applications clientes et de serveur Windows, notamment ASP.NET.

Notes

Dans .NET Framework 3.5 et antérieur, ASP.NET fournissait une implémentation du cache en mémoire dans l’espace de noms System.Web.Caching. Dans les versions précédentes du .NET Framework, la mise en cache était disponible seulement dans l’espace de noms System.Web et nécessitait donc une dépendance vis-à-vis de classes ASP.NET. Dans le .NET Framework 4, l’espace de noms System.Runtime.Caching contient des API conçues pour les applications web et non-web.

Mise en cache des données

Vous pouvez mettre en cache des informations à l’aide des classes de l’espace de noms System.Runtime.Caching. Les classes de mise en cache dans cet espace de noms fournissent les fonctionnalités suivantes :

  • Des types abstraits qui fournissent la base pour la création d’implémentations de cache personnalisées

  • Une implémentation de cache d’objets en mémoire concrète

La classe de mise en cache de base abstraite (ObjectCache) définit les tâches de mise en cache suivantes :

  • Création et gestion des entrées de cache

  • Spécification des informations d’expiration et d’éviction

  • Événements déclenchés en réponse aux modifications apportées aux entrées de cache

La classe MemoryCache est une implémentation de cache d’objets en mémoire de la classe ObjectCache. Vous pouvez utiliser la classe MemoryCache pour la plupart des tâches de mise en cache.

Notes

La classe MemoryCache est modélisée sur l’objet de cache ASP.NET qui est défini dans l’espace de noms System.Web.Caching. Par conséquent, la logique de mise en cache interne est similaire à la logique fournie dans les versions antérieures d’ASP.NET.

Pour obtenir un exemple qui illustre comment utiliser la mise en cache dans une application WPF, consultez Procédure pas à pas : mise en cache de données d’application dans une application WPF.

Mise en cache dans les applications ASP.NET

Les classes de mise en cache dans l’espace de noms System.Runtime.Caching fournissent la fonctionnalité de mise en cache des données dans ASP.NET.

Notes

Si votre application cible le .NET Framework 3.5 ou antérieur, vous devez utiliser les classes de mise en cache définies dans l’espace de noms System.Web.Caching. Pour plus d’informations, consultez Vue d’ensemble de la mise en cache ASP.NET.

Notes

Quand vous développez de nouvelles applications, nous vous recommandons d’utiliser la classe MemoryCache. L’API fournie dans l’espace de noms System.Runtime.Caching est semblable à celle fournie dans l’espace de noms Cache. Ainsi, elle vous sera familière si vous utilisiez la mise en cache dans les versions antérieures d’ASP.NET. Pour obtenir un exemple qui illustre comment utiliser la mise en cache dans les application ASP.NET, consultez Procédure pas à pas : mise en cache de données d’application dans ASP.NET.

Mise en cache de sortie

Pour mettre manuellement en cache les données d’application, vous pouvez utiliser la classe MemoryCache dans ASP.NET. ASP.NET prend également en charge la mise en cache de sortie, qui stocke la sortie générée des pages, des contrôles et des réponses HTTP en mémoire. Vous pouvez configurer la mise en cache de sortie de façon déclarative dans une page web ASP.NET ou à l’aide de paramètres dans le fichier Web.config. Pour plus d’informations, consultez outputCache, élément de caching (Schéma des paramètres ASP.NET).

ASP.NET vous permet d’étendre la mise en cache de sortie en créant des fournisseurs de cache de sortie personnalisés. Grâce aux fournisseurs personnalisés, vous pouvez stocker le contenu mis en cache à l’aide d’autres dispositifs de stockage tels que des disques, le stockage cloud et des moteurs de cache distribué. Pour créer un fournisseur de cache de sortie personnalisé, vous devez créer une classe qui dérive de la classe OutputCacheProvider et configurer l’application pour qu’elle utilise le fournisseur de cache de sortie personnalisé.

Mise en cache dans les services REST WCF

Pour les services REST WCF, le .NET Framework vous permet de tirer parti de la mise en cache de sortie déclarative disponible dans ASP.NET. Cela vous permet de mettre en cache les réponses provenant de vos opérations de service REST WCF. Quand un utilisateur envoie une requête HTTP GET à un service configuré pour la mise en cache, ASP.NET renvoie la réponse mise en cache et la méthode de service n’est pas appelée. Une fois le cache expiré, au prochain envoi d’une requête HTTP GET par un utilisateur, votre méthode de service est appelée et la réponse est à nouveau mise en cache.

Le .NET Framework vous permet également d’implémenter une mise en cache HTTP GET conditionnelle. Dans les scénarios REST, une requête HTTP GET conditionnelle est souvent utilisée par les services pour implémenter une mise en cache HTTP intelligente, comme décrit dans HTTP Specification. Pour plus d’informations, consultez Prise en charge de la mise en cache pour les services HTTP Web WCF.

Extension de la mise en cache dans le .NET Framework

La mise en cache dans le .NET Framework est conçue pour être extensible. La classe ObjectCache vous permet de créer une implémentation de cache personnalisée. Cette classe fournit des membres accessibles à toutes les applications managées, notamment Windows Forms, Windows Presentation Foundation (WPF) et Windows Communication Foundation (WCF). Vous pouvez ainsi créer une classe de cache qui utilise un mécanisme de stockage différent, ou obtenir un contrôle précis des opérations de cache.

Pour étendre la mise en cache, vous pouvez effectuer les étapes ci-dessous :

Pour plus d’informations, consultez l’entrée Extensible Output Caching with ASP.NET 4 (VS 2010 and .NET Framework 4.0 Series) sur le blog de Scott Guthrie.

Voir aussi