Es ist ein Prozess zur Erstellung einer kompakten Form eines serialisierten Objekts zur Leistungsverbesserung, was zu schnelleren Netzwerkfahrten führt. Wie der Name schon sagt, ist eine kompakte serialisierte Datei kompakt in Form von Daten und Prozessen. Die Idee hinter der kompakten Serialisierung ist, dass jedem „bekannten Typ“ (ein bekannter Typ ist ein Typ, der beim Framework registriert ist) vom Framework ein eindeutiges 2-Byte-Typ-Handle zugewiesen wird, mit dem der Deserialisierer die „bekannten Typen“ eindeutig identifizieren kann. .
Angenommen, das Framework weist System.Int0 ein Handle 32 zu. Dann schreibt der Serialisierer das 2-Byte-Handle, gefolgt von 4 Bytes des Objektwerts, in den Stream. Deserializer liest das Handle, ermittelt den Objekttyp und erstellt dann das Objekt und füllt es mit seinem Wert. Andererseits schreibt die native Serialisierung die vollständigen Typinformationen mit Objektdaten. NCache überwindet diese Probleme der nativen Sterilisation auf raffinierte Weise auf folgende Weise:
Um die kompakte Serialisierung zu verwenden, müssen Sie einen öffentlichen Standardkonstruktor (ohne Parameter) in einem kompakten serialisierbaren Typ definieren und diesen Typ bei registrieren NCache Manager. NCache unterstützt jetzt benutzerdefinierte generische Typen. Alle generischen Typen mit beliebig vielen Argumenten können durch kompakte Serialisierung serialisiert werden. Wenn ein Client keine generischen Typen und ihre Parameter über die Benutzeroberfläche hinzufügen möchte, hat er die Möglichkeit, sie über die Klasse IGenericTypes hinzuzufügen.
So verwenden Sie Compact Serializable-Typen mit NCache Cache konfigurieren mit NCache Manager und registrieren Sie dann Ihre kompakten serialisierbaren Typen mit NCache.
Sie können die Typen einzeln registrieren 'Typen hinzufügen' Taste. Führen Sie die folgenden Schritte aus, um Ihre Typen mit konfiguriertem Cache zu registrieren:
Dies ist die andere Möglichkeit, generische kompakte Typen über "Generic Type Handler" zu registrieren. Mit Generic Type Handler kann der Benutzer alle generischen Typen auf einmal hinzufügen, indem er unsere Schnittstelle implementiert. Das spart Zeit und Aufwand. Hier ist ein Beispielcode dafür.
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
}
Gehen Sie zum Registrieren von Typen wie folgt vor.