Utilisation d'un sérialiseur personnalisé avec Azure In-Role Cache
Important
Microsoft recommande tous les nouveaux développements d’utiliser le Cache Redis Azure. Pour obtenir de la documentation et des conseils actuels sur le choix d’une offre Azure Cache, consultez Quelle offre Azure Cache est adaptée à moi ?
Microsoft Azure Cache sérialise les objets avant de les placer dans le cache et désérialise les objets récupérés à partir du cache. En interne, la sérialisation est gérée par la classe NetDataContractSerializer . Cette rubrique explique comment créer et utiliser une classe de sérialisation personnalisée pour une utilisation dans vos applications Azure qui utilisent cache.
Conseil
Vous pouvez améliorer votre efficacité en optimisant la sérialisation de types connus.
Pour créer la classe de sérialisation personnalisée
Préparez d’abord l’environnement de développement pour utiliser le cache.
Créez une classe qui dérive d’IDataCacheObjectSerializer.
Implémentez les deux méthodes de cette interface : Sérialiser et Désérialiser.
class MySerializer : IDataCacheObjectSerializer
{
public object Deserialize(System.IO.Stream stream)
{
object returnObject = null;
// Deserialize the System.IO.Stream 'stream' from
// the cache and return the object.
return returnObject;
}
public void Serialize(System.IO.Stream stream, object value)
{
// Serialize the object 'value' into the System.IO.Stream 'stream'
// which will then be stored in the cache.
}
}
Pour utiliser le fichier de configuration pour spécifier le sérialiseur personnalisé
Ajoutez le code de votre sérialiseur personnalisé à votre projet, ou insérez une référence à un assembly qui implémente celui-ci.
Dans le fichier de configuration de l’application, ajoutez un élément serializationProperties dans la section dataCacheClient .
Dans l’élément serializationProperties , affectez l’attribut sérialiseur à « CustomSerializer ». Affectez l’attribut customSerializerType à la classe qui implémente le sérialiseur.
L'exemple suivant montre comment utiliser le fichier de configuration de l'application pour spécifier un sérialiseur personnalisé nommé MyNamespace.MySerializer
.
<dataCacheClient>
<serializationProperties serializer="CustomSerializer"
customSerializerType="MyNamespace.MySerializer, MyAssembly" />
<!-- Other dataCacheClient Elements, such as hosts -->
</dataCacheClient>
Pour utiliser un code pour spécifier le sérialiseur personnalisé
Ajoutez le code de votre sérialiseur personnalisé à votre projet, ou insérez une référence à un assembly qui implémente celui-ci.
Créez un objet DataCacheSerializationProperties à l’aide du constructeur pour spécifier l’option DataCacheObjectSerializerType.CustomSerializer et une nouvelle instance de votre classe sérialiseur.
Affectez cet objet à la propriété DataCacheFactoryConfiguration.SerializationProperties et utilisez cet objet DataCacheFactoryConfiguration pour configurer un nouveau DataCacheFactoryFactory.
L'exemple suivant montre comment utiliser un code pour spécifier un sérialiseur personnalisé nommé MyNamespace.MySerializer
.
DataCacheFactoryConfiguration configuration = new DataCacheFactoryConfiguration();
configuration.SerializationProperties =
new DataCacheSerializationProperties(DataCacheObjectSerializerType.CustomSerializer,
new MyNamespace.MySerializer());
// Assign other DataCacheFactoryConfiguration properties...
// Then create a DataCacheFactory with this configuration
DataCacheFactory factory = new DataCacheFactory(configuration);
Recommandations
Si un sérialiseur personnalisé est utilisé avec un cache, tous les clients de ce dernier doivent utiliser la même version du sérialiseur personnalisé pour accéder aux objets partagés dans ce cache.