これは、パフォーマンスを向上させるためにシリアル化されたオブジェクトのコンパクトな形式を生成するプロセスであり、その結果、ネットワーク接続が高速化されます。 名前が示すように、コンパクト シリアル化ファイルはデータとプロセスの形式がコンパクトです。 コンパクトなシリアル化の背後にある考え方は、すべての「既知の型」 (既知の型はフレームワークに登録されている型です) にフレームワークによって一意の 2 バイトの型ハンドルが割り当てられ、これによりデシリアライザーが「既知の型」を一意に識別できるようにするというものです。 。
たとえば、フレームワークがSystem.Int0にハンドル32を割り当てたとします。 次に、シリアライザーは2バイトのハンドルに続いて4バイトのオブジェクト値をストリームに書き込みます。 デシリアライザーはハンドルを読み取り、オブジェクトタイプを把握してから、オブジェクトを作成してその値を入力します。 一方、ネイティブシリアル化は、オブジェクトデータを使用して完全な型情報を書き込みます。 NCache これらのネイティブ滅菌の問題は、次の方法で洗練されて解決されています。
コンパクト シリアル化を使用するには、コンパクト シリアル化可能な型でデフォルトのパブリック コンストラクター (パラメーターなし) を定義し、その型を で登録する必要があります。 NCache マネージャー。 NCache カスタム ジェネリック タイプをサポートするようになりました。 任意の数の引数を持つすべてのジェネリック型は、コンパクトなシリアル化を通じてシリアル化できます。 クライアントが UI を通じてジェネリック型とそのパラメーターを追加したくない場合は、IGenericTypes クラスを通じて追加するオプションがあります。
Compact Serializable 型を使用するには NCache キャッシュを設定する NCache Manager を使用してコンパクトなシリアル化可能な型を登録します。 NCache.
タイプを XNUMX つずつ登録できます。 「タイプを追加」 ボタン。 構成されたキャッシュにタイプを登録するには、次の手順を実行します。
これは、「ジェネリック型ハンドラー」を通じてジェネリックコンパクト型を登録するもう XNUMX つの方法です。 ジェネリック タイプ ハンドラーを使用すると、インターフェイスを実装することで、すべてのジェネリック タイプを一度に追加できます。 これにより、時間と労力が節約されます。 これのサンプルコードを次に示します。
public class CustomGenericType <T,K,V> { }
public class SetGenerics: IGenericTypeProvider
{
Type[] types = new Type[6];
#region IGenericTypeProvider Members
Type[] IGenericTypeProvider.GetGenericTypes()
{
types[0]=typeof(Dictionary<string, Customer>);
types[1]=typeof(List<int>);
types[2]=typeof(CustomGenericType<Employee, Product, Customer>);
types[3]=typeof(CustomGenericType<Employee, Product, int>);
types[4]=typeof(CustomGenericType<Employee, string, byte>);
types[5]=typeof(CustomGenericType<string, Customer, bool>);
return types;
}
#endregion
}
タイプを登録するには、次の手順に従います。