方法: Azure In-Role Cache でカスタム シリアライザーを使用する
重要
Microsoft では、すべての新しい開発で Azure Redis Cache を使用することをお勧めします。 Azure Cache オファリングの選択に関する最新のドキュメントとガイダンスについては、自分に適した Azure Cache オファリングを参照してください。
Microsoft Azure キャッシュは、キャッシュに配置する前にオブジェクトをシリアル化し、キャッシュから取得されたオブジェクトを逆シリアル化します。 内部的には、シリアル化は NetDataContractSerializer クラスによって処理されます。 このトピックでは、Cache を使用する Azure アプリケーションで使用するカスタムシリアル化クラスを作成して使用する方法について説明します。
ヒント
既知のタイプのシリアル化を最適化することで、パフォーマンスに関するメリットを潜在的に実現することができます。
カスタム シリアル化クラスを作成するには
まず 、Cache を 使用するように開発環境を準備します。
IDataCacheObjectSerializer から派生するクラスを作成します。
このインターフェイスには、 シリアル化 と 逆シリアル化の 2 つのメソッドを実装します。
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.
}
}
構成ファイルを使って、カスタム シリアライザーを使用するには
プロジェクトにカスタム シリアライザー用のコードを追加するか、カスタム シリアライザーを実装するアセンブリへの参照を追加します。
アプリケーション構成ファイルで、dataCacheClient セクション内に serializationProperties 要素を追加します。
serializationProperties 要素内で、シリアライザー属性を "CustomSerializer" に割り当てます。 シリアライザーを実装するクラスに customSerializerType 属性を割り当てます。
次の例は、MyNamespace.MySerializer
という名前のカスタム シリアライザーを指定するアプリケーション構成ファイルの使用方法を示しています。
<dataCacheClient>
<serializationProperties serializer="CustomSerializer"
customSerializerType="MyNamespace.MySerializer, MyAssembly" />
<!-- Other dataCacheClient Elements, such as hosts -->
</dataCacheClient>
コードを使ってカスタム シリアライザーを指定するには
プロジェクトにカスタム シリアライザー用のコードを追加するか、カスタム シリアライザーを実装するアセンブリへの参照を追加します。
コンストラクターを使用して DataCacheObjectSerializerType.CustomSerializer オプションとシリアライザー クラスの新しいインスタンスを指定して、DataCacheSerializationProperties オブジェクトを作成します。
このオブジェクトを DataCacheFactoryConfiguration.SerializationProperties プロパティに割り当て、その DataCacheFactoryConfiguration オブジェクトを使用して新しい DataCacheFactory を構成します。
次の例は、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);
推奨事項
キャッシュとカスタム シリアライザーを使用する場合、そのキャッシュ内の共有オブジェクトにアクセスする際に、そのキャッシュのすべてのクライアントは同じバージョンのカスタム シリアライザーを使用する必要があります。