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
Dans Visual Studio 2010 ;, créez un projet Bibliothèque de classes.
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.
Ouvrez le fichier source de ce projet (Class1.cs ou Class1.vb selon le langage du projet).
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
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
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.
DataCacheErrorCode.ReadThroughProviderFailure
DataCacheErrorCode.ReadThroughProviderDidNotReturnResult
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.
Ouvrez le projet de fournisseur dans Visual Studio 2010 ;.
Dans le menu Débogage, cliquez sur Attacher au processus.
Activez les options Afficher les processus de tous les utilisateurs et Afficher les processus de toutes les sessions.
Sélectionnez le processus DistributedCacheService.exe.
Cliquez sur le bouton Attacher.
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