So arbeiten Sie mit der Serialisierung in .Net

Wenn Sie mit Anwendungen arbeiten, müssen Sie häufig Daten auf einem dauerhaften oder nicht dauerhaften Speichermedium speichern, damit dieselben Daten zu einem späteren Zeitpunkt abgerufen werden können. Die Serialisierung, eine von der CLR bereitgestellte Funktion, kann Ihnen dabei helfen.

Serialisierung kann als der Prozess des Konvertierens eines Objekts in einen Bytestrom definiert werden, wobei der Status des Objekts im Speicher der Datenbank einer Datei beibehalten wird. Die Umkehrung der Serialisierung ist die Deserialisierung, bei der das Objekt aus dem Bytestrom rekonstruiert wird. Mit anderen Worten, Deserialisierung ist der Prozess des Konvertierens eines serialisierten Objekts in seinen ursprünglichen Zustand.

Die Serialisierung ist erforderlich, um ein Objekt über das Kabel zu übertragen. Sie erleichtert die Übertragung eines Objekts über ein Netzwerk. Daher können Sie die Serialisierung nutzen, um ein Objekt von einer Anwendungsdomäne an eine andere zu übergeben. Sie können auch die Serialisierung nutzen, um einen Klon eines Objekts zu erstellen.

Die Serialisierung ist jedoch auch aufgrund des Ressourcenaufwands bei der Serialisierung und De-Serialisierung von Objekten kostspielig. Um mit Serialization in .Net zu arbeiten, sollten Sie den System.Runtime.Serialization-Namespace nutzen, dh Sie sollten diesen Namespace in Ihr Programm aufnehmen.

Sie können eine Klasse mit dem Attribut [Serializable] serialisierbar machen. Hier ist ein Beispiel, das zeigt, wie Sie dieses Attribut auf eine Klasse anwenden können.

[Serializable]

public class Product

{

   public int productCode;

   public string productName;

}

Wenn Sie nun die Serialisierung eines oder mehrerer Mitglieder einer Klasse einschränken möchten, können Sie das NonSerialized-Attribut verwenden, wie im folgenden Codeausschnitt gezeigt.

[Serializable]

    public class Product

    {

        public int productCode;

        public string productName;

        [NonSerialized()]

        public double productPrice;

    }

Das .NET-Framework bietet Unterstützung für die folgenden Arten der Serialisierung.

  1. Binär
  2. SEIFE
  3. XML
  4. Benutzerdefiniert

Binäre Serialisierung

Die binäre Serialisierung ist die schnellste aller Serialisierungstechniken. Sie kann verwendet werden, um ein Objekt in einen binären Stream zu serialisieren. Es handelt sich um eine Art der Serialisierung, mit der ein Objekt in einen Ausgabestream serialisiert werden kann, während die Identität des Objekts erhalten bleibt. Die Typinformationen gehen beim Serialisierungsprozess nicht verloren. Beachten Sie, dass bei Verwendung der binären Serialisierung das Objekt vollständig gespeichert wird. Um mit der binären Serialisierung arbeiten zu können, sollten Sie den Namespace System.Runtime.Serialization.Formatters.Binary einschließen.

SOAP-Serialisierung

Die SOAP-Serialisierung (Simple Object Access Protocol) ist eine gute Wahl, wenn Sie Objekte von einer Anwendung in eine andere übertragen möchten, wenn diese Anwendungen heterogene Architekturen verwenden. Im Wesentlichen ist der Hauptvorteil der Verwendung der SOAP-Serialisierung die Portabilität. Die SOAP-Serialisierung kann verwendet werden, um ein Objekt im SOAP-Format zu serialisieren. Um mit der SOAP-Serialisierung arbeiten zu können, sollten Sie den Namespace System.Runtime.Serialization.Formatters.Soap in Ihr Programm aufnehmen. Beachten Sie, dass Objekte, die mithilfe der SOAP-Serialisierung serialisiert werden, wie die XML-Serialisierung als XML beibehalten werden.

XML-Serialisierung

XML-Serialisierung ist eine Art von Serialisierung, mit der die öffentlichen Mitglieder einer Instanz einer Klasse in einen XML-Stream serialisiert werden. Beachten Sie, dass die XML-Serialisierung im Vergleich zur binären Serialisierung langsam ist - tatsächlich ist sie viel langsamer. Der Hauptvorteil der XML-Serialisierung besteht darin, dass sie plattformübergreifende Unterstützung bietet. Da sie textbasiert ist, ist sie lesbar und kann auch bearbeitet werden. Sie können XmlAttribute nutzen und für eine Eigenschaft festlegen, damit die Eigenschaft mithilfe der XML-Serialisierung serialisiert werden kann. Das folgende Codeausschnitt zeigt, wie Sie XmlAttribute für eine Eigenschaft verwenden können.

[XmlAttribute("productName")]

public string ProductName

{

  get

  {

    return productName;

  }

  set

  {

    productName = value;

  }

}

Um ein Objekt mithilfe der XML-Serialisierung zu serialisieren und zu de-serialisieren, können Sie den XmlSerializer verwenden. Das folgende Codeausschnitt zeigt, wie Sie ein Objekt mithilfe der XML-Serialisierung serialisieren können. Beachten Sie, wie der XmlSerializer verwendet wird.

XmlSerializer xmlSerializer = new XmlSerializer(typeof(Product));

using (TextWriter textWriter = new StreamWriter(@"D:\Product.xml"))

 {

    xmlSerializer.Serialize(textWriter, productObject);

 }

Benutzerdefinierte Serialisierung

Mithilfe der benutzerdefinierten Serialisierung können Sie steuern, wie eine Instanz eines Typs serialisiert und deserialisiert werden kann. Sie können eine benutzerdefinierte Serialisierung implementieren, indem Sie die ISerializable-Schnittstelle implementieren. Die ISerializable-Schnittstelle deklariert die GetObjectData () -Methode. Das folgende Codeausschnitt zeigt, wie Sie eine benutzerdefinierte Serialisierungstechnik implementieren können, indem Sie die ISerializable-Schnittstelle implementieren.

[Serializable]

public class Product : ISerializable

{

    public void GetObjectData(SerializationInfo info, StreamingContext context)

    {

        //Usual code

    }

}