Partage via


Extension de la classe DataCacheStoreProvider (mise en cache d'AppFabric 1.1)

Cette rubrique décrit la création d'un fournisseur de lecture/écriture pour la Mise en cache de Windows Server AppFabric. Pour créer un fournisseur, vous devez implémenter la classe de base abstraite DataCacheStoreProvider.

Création du projet de fournisseur

  1. Dans Visual Studio 2010 ;, créez un projet Bibliothèque de classes.

  2. Ajoutez une référence à l'assembly Microsoft.ApplicationServer.Core.dll. Par défaut, cet assembly se trouve à l'emplacement C:\Program Files\Windows Server AppFabric.

  3. Ouvrez le fichier source de ce projet (Class1.cs ou Class1.vb selon le langage du projet).

  4. Dans la partie supérieure du fichier source, ajoutez une instruction Using (Imports dans Visual Basic) à l'espace de noms Microsoft.ApplicationServer.Caching.

    using Microsoft.ApplicationServer.Caching;
    
    Imports Microsoft.ApplicationServer.Caching
    
  5. Modifiez la classe afin qu'elle hérite de la classe DataCacheStoreProvider. L'éditeur de code Visual Studio 2010 ; inclut une fonctionnalité de création automatique de fonctions vides à partir de cette classe. Dans Visual C#, cliquez avec le bouton droit sur la classe DataCacheStoreProvider et sélectionnez Implémenter une classe abstraite. Dans Visual Basic, appuyez sur Entrée après la ligne Inherits.

    namespace RTProvider
    {
        public class Provider : DataCacheStoreProvider
    
    Public Class Provider
        Inherits DataCacheStoreProvider
    
  6. Signez l'assembly pour l'installer dans le Global Assembly Cache avec un nom fort. Dans l'Explorateur de solutions, cliquez avec le bouton droit sur le projet, puis sélectionnez Propriétés. Dans la section Signature des propriétés du projet, activez la case à cocherSigner l'assembly. Dans la liste déroulante Choisir un fichier de clé de nom fort, sélectionnez un fichier de clé existant ou sélectionnez <Nouveau...> pour en créer un.

Ajout d'un constructeur public

Chaque fournisseur doit implémenter un constructeur public avec la signature suivante :

public ProviderClass(string cacheName, Dictionary<string,string> config)

Remplacez la valeur ProviderClass dans l'exemple ci-dessus par le nom de la classe qui implémente les méthodes de la classe DataCacheStoreProvider. Ce constructeur est appelé lorsqu'un cache active pour la première fois la lecture ou l'écriture sur un hôte de cache en cours d'exécution. Il est également appelé à chaque redémarrage de l'hôte de cache. Le constructeur utilise les deux paramètres suivants :

Paramètre Description

cacheName

Cette string est le nom du cache associé à ce fournisseur. Ce nom peut être stocké pour un usage ultérieur. Par exemple, il est nécessaire de connaître le nom du cache lors de la création d'objets DataCacheItem en réponse aux demandes de lecture.

config

Cet objet Dictionary<string,string> inclut les paramètres de configuration du fournisseur. Ces paramètres sont propres au fournisseur et à ses besoins de configuration au moment de l'exécution. Ils sont transmis à l'aide du paramètre ProviderSettings de la commande Windows PowerShell New-Cache ou Set-CacheConfig.

Implémentation des méthodes du fournisseur

Les méthodes de la classe DataCacheStoreProvider doivent être implémentées par le fournisseur. Si vous créez un fournisseur de lecture uniquement, vous n'êtes pas tenu d'implémenter les méthodes « Write ». De même, si vous créez un fournisseur d'écriture uniquement, vous n'êtes pas tenu d'implémenter les méthodes « Read ».

Les noms des méthodes décrivent généralement leur objet. Le tableau suivant décrit les méthodes sans inclure les surcharges.

Méthode Description

Read

Appelée lorsqu'un client de cache demande un élément mis en cache qui n'existe pas dans le cache associé.

Write

Appelée pour les éléments récemment ajoutés par les clients de cache ou changés dans le cache.

Delete

Appelée lorsqu'un client de cache supprime un élément du cache associé.

Dispose

Supprime le fournisseur.

Il existe deux méthodes de lecture. La première méthode Read reçoit un paramètre DataCacheItemKey qui identifie l'élément à renvoyer. L'autre surcharge Read reçoit un ensemble d'objets DataCacheItemKey à récupérer et transmettre dans un Dictionary d'objets DataCacheItemKey et DataCacheItem. Cet objet Dictionary est vide à l'origine et les éléments de lecture doivent être ajoutés avant d'être renvoyés par la méthode Read. Vous devez utiliser la classe DataCacheItemFactory pour créer les éléments demandés, comme dans l'exemple suivant.

DataCacheItem dataCacheItem = DataCacheItemFactory.GetCacheItem(key, CACHE_NAME, objectValue, null);

Dans l'exemple précédent, la chaîne CACHE_NAME doit être définie sur le nom du cache précédemment transmis au constructeur surchargé. La key est la DataCacheItemKey demandée. La objectValue est l'objet qui doit être renvoyé aux clients pour cette clé de cache.

De la même manière, il existe deux méthodes d'écriture. La première méthode Write reçoit un objet DataCacheItem. La propriété Key de cet objet contient la DataCacheItemKey associée et la propriété Value contient la valeur. L'autre méthode Write reçoit un Dictionary d'objets DataCacheItemKey et DataCacheItem.

Important

Il est important de supprimer les éléments de l'objet Dictionary<DataCacheItemKey, DataCacheItem> à mesure qu'ils sont écrits dans le magasin principal. Si les éléments ne sont pas supprimés, le cache considère qu'il s'agit d'un échec d'écriture et recommence l'opération ultérieurement.

Gestion des erreurs

En cas d'erreur, vous pouvez lever un objet d'exception DataCacheStoreException. Le résultat de cette exception varie selon que l'exception survient dans le cadre de la méthode Read ou Write. Le tableau suivant décrit ces différences.

Méthode Résultat de l'exception levée

Read

Le client de cache exécutant la lecture reçoit une exception DataCacheException avec la propriété ErrorCode égale à DataCacheErrorCode.ReadThroughProviderFailure (le texte de l'exception inclut le code « <ERRCA0025> »).

Write

L'écriture est considérée comme ayant échoué et fait l'objet d'une nouvelle tentative conformément à la stratégie régissant les nouvelles tentatives pour les opérations d'écriture. Le client de cache n'est pas informé de cette erreur.

Un client de cache peut recevoir trois valeurs DataCacheErrorCode dans le cadre des appels de la méthode DataCache.Get qui accèdent au fournisseur de lecture.

  1. DataCacheErrorCode.ReadThroughProviderFailure

  2. DataCacheErrorCode.ReadThroughProviderDidNotReturnResult

  3. DataCacheErrorCode.ReadThroughProviderNotFound

Le temps consacré aux méthodes Read du fournisseur est ajouté à la durée totale de la demande pour la méthode DataCache.Get. Pour cette raison, il se peut que vous deviez allonger le délai d'expiration de la demande afin de prendre en compte tout délai introduit par le fournisseur. Pour plus d’informations, consultez la rubrique Configuration des délais d'expiration du client de cache (mise en cache de Windows Server AppFabric).

Test et débogage du fournisseur

Dans le cadre des étapes de développement et de test, il peut être préférable de configurer un cluster de cache à nœud unique sur l'ordinateur de développement. Cela permet de recréer rapidement le cluster de cache, de rajouter l'assembly au Global Assembly Cache local et de redémarrer le cluster de cache local. La procédure suivante permet de déboguer le fournisseur.

  1. Ouvrez le projet de fournisseur dans Visual Studio 2010 ;.

  2. Dans le menu Débogage, cliquez sur Attacher au processus.

  3. Activez les options Afficher les processus de tous les utilisateurs et Afficher les processus de toutes les sessions.

  4. Sélectionnez le processus DistributedCacheService.exe.

  5. Cliquez sur le bouton Attacher.

  6. Définissez des points d'arrêt dans le code du fournisseur et effectuez des opérations sur le cache à partir d'une autre application impliquant l'appel des méthodes du fournisseur.

Avertissement

L'arrêt de la session de débogage sans détachement du débogueur provoque l'arrêt du service de mise en cache et la perte des données mises en cache sur l'ordinateur.

Voir aussi

Concepts

Déploiement d'un fournisseur de lecture/écriture (mise en cache d'AppFabric 1.1)
Activation de la lecture et de l'écriture sur un cache (mise en cache d'AppFabric 1.1)

  2012-03-05