Il s'agit d'un processus de production d'une forme compacte d'objet sérialisé pour l'amélioration des performances, ce qui se traduit par des trajets réseau plus rapides. Comme son nom l'indique, le fichier sérialisé compact est compact sous la forme de données et de processus. L'idée derrière la sérialisation compacte est que chaque 'type connu' (un type connu est un type enregistré avec le framework) se voit attribuer un handle de type unique de 2 octets par le framework, ce qui permet au désérialiseur d'identifier de manière unique les 'types connus' .
Par exemple, supposons que le framework attribue un handle 0 à System.Int32. Ensuite, le sérialiseur écrit le descripteur de 2 octets suivi de 4 octets de valeur d'objet dans le flux. Le désérialiseur lit le handle, détermine le type d'objet, puis crée et remplit l'objet avec sa valeur. D'autre part, la sérialisation native écrit les informations de type complètes avec les données d'objet. NCache ces problèmes de stérilisation native sont résolus de manière sophistiquée de la manière suivante :
Pour utiliser la sérialisation compacte, vous devez définir un constructeur public par défaut (sans paramètre) dans un type sérialisable compact et enregistrer ce type avec NCache Directeur. NCache prend désormais en charge les types génériques personnalisés. Tous les types génériques avec n'importe quel nombre d'arguments peuvent être sérialisés via une sérialisation compacte. Si un client ne souhaite pas ajouter de types génériques et ses paramètres via l'interface utilisateur, il a la possibilité de les ajouter via la classe IGenericTypes.
Pour utiliser des types compacts sérialisables avec NCache Configurer le cache avec NCache Manager, puis enregistrez vos types compacts sérialisables avec NCache.
Vous pouvez enregistrer les types un par un via 'Ajouter des types' bouton. Effectuez les étapes suivantes pour enregistrer vos types avec le cache configuré :
C'est l'autre façon d'enregistrer des types compacts génériques via "Generic Type Handler". Avec Generic Type Handler, l'utilisateur peut ajouter tous les types génériques à la fois en implémentant notre interface. Cela permet d'économiser du temps et des efforts. Voici un exemple de code pour cela.
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
}
Pour enregistrer les types, suivez ces étapes.