Partager via


Modèle de programmation (mise en cache d'AppFabric 1.1)

Deux modèles de programmation sont désormais disponibles pour Microsoft AppFabric 1.1 pour Windows Server :

  • Mode de programmation de type cache-aside. Si vos données ne sont pas situées dans le cache, votre application, et non le cache distribué d'AppFabric, doit recharger celles-ci dans le cache à partir de la source de données d'origine.

  • Mode de programmation de type Lecture/écriture. Dans le cadre de ce modèle, vous créez un fournisseur personnalisé pour accéder au magasin de données principal. Si un élement n'est pas présent dans le cache, le fournisseur le récupère auprès du magasin principal. Les éléments écrits dans un cache sont également écrits de façon régulière et asynchrone dans le magasin principal. Pour plus d'informations sur ce modèle, consultez la rubrique Lecture et écriture (mise en cache d'AppFabric 1.1).

Stratégie de mise en cache

Le code de l'application doit être conçu de manière à ce qu'il puisse fonctionner indépendamment du cache et ne requière pas que les données en cache soient toujours disponibles. Comme les données du cache ne persistent pas de manière durable, il se peut qu'elles soient indisponibles.

La fonctionnalité de haute disponibilité contribue à la protection contre les défaillances d'ordinateur et de traitement d'hôtes de cache individuels lorsque le cluster est en cours d'exécution. Il peut néanmoins y avoir des scénarios où le cluster entier tombe en panne. Par exemple, si un ou plusieurs hôtes principaux tombent en panne, le cluster entier s'arrête. Pour plus d'informations, consultez la rubrique Hôtes principaux et gestion du cluster (mise en cache d'AppFabric 1.1).

Votre code peut rencontrer une absence dans le cache pour de nombreuses autres raisons : il se peut que l'élément de cache ait expiré ou été supprimé, que le serveur ou le service cache ait été redémarré, ou que le cluster de cache ait été redémarré accidentellement. Quelle que soit la raison, si l'objet mis en cache n'est pas disponible, votre code d'application doit pouvoir accéder à la base de données (ou à une autre source de données).

Clients de cache

Pour stocker des données dans le cache, utilisez la méthode GetCache ou la méthode GetDefaultCache pour renvoyer un objet DataCache. Une fois instancié, cet objet DataCache est désigné comme client de cache.

Notes

Il est recommandé de réduire le nombre d'objets DataCacheFactory créés dans une application prenant en charge le cache afin d'optimiser les performances. Stockez l'objet DataCacheFactory dans une variable accessible à toutes les parties de l'application qui utilisent des clients de cache.

De nombreuses options sont disponibles pour configurer le comportement du client de cache. Vous pouvez spécifier ces paramètres de configuration par programme, avec un fichier de configuration d'application, ou encore en utilisant les deux approches. Pour plus d'informations sur les clients de cache et les paramètres de configuration d'application disponibles, consultez les rubriques Clients de cache et cache local (mise en cache d'AppFabric 1.1) et Paramètres de configuration des applications (mise en cache d'AppFabric 1.1).

Plusieurs clients de cache peuvent accéder à un seul cache simultanément. Des applications s'exécutant sur différents ordinateurs peuvent faire cela en instanciant un client de cache configuré pour utiliser le même cache. L'exemple de code suivant illustre ce concept. Notez les commentaires utilisés pour identifier le code exécuté sur les différentes instances de client de cache.

'Each application has a similar GetCache method call
Dim myCacheFactory As DataCacheFactory = New DataCacheFactory()
Dim catalog As DataCache = myCacheFactory.GetCache("catalog")

'One cache client saves an object to the catalog named "toy101"
Call catalog.Put("toy101", New ToyObject("toy101", "Playschool"))

'The same or different cache client retrieves the object
Dim toy As ToyObject = CType(catalog.Get("toy101"), ToyObject)

'The same or a different cache client removes the object
catalog.Remove("toy101")
//Each application has a similar GetCache method call
DataCacheFactory myCacheFactory = new DataCacheFactory();
DataCache catalog = myCacheFactory.GetCache("catalog");

//One cache client saves an object to the catalog named "toy101"
catalog.Put("toy101", new ToyObject("toy101", "Playschool"));

//The same or different cache client retrieves the object
ToyObject toy = (ToyObject)catalog.Get("toy101");

//The same or a different cache client removes the object
catalog.Remove("toy101");

Voir aussi

Concepts

Diagramme de l'architecture physique de mise en cache d'AppFabric (mise en cache d'AppFabric 1.1)
Diagramme de l'architecture logique de mise en cache d'AppFabric (mise en cache d'AppFabric 1.1)
Développement d'un client de cache

  2012-03-05