Serialisierung und Deserialisierung von Objekten?

7

Was sind Objektserialisierung und Deserialisierung? Welchen Unterschied macht die Serialisierung mit normalen Techniken wie dem Lesen der Eigenschaften eines Objekts und dem anschließenden Füllen der Spalten einer DataRow mit diesen und dem abschließenden Speichern der DataRow in der Datenbank?

Danke

    
odiseh 01.09.2009, 05:11
quelle

5 Antworten

14

Serialisierung bezieht sich im Allgemeinen auf das Erstellen einer Version der Daten (anstatt der Objekte), die für die Speicherung (möglicherweise in einer Datei), für die Übertragung über ein Netzwerk oder nur für die Übertragung zwischen Prozessen / AppDomain s verwendet werden können / etc auf einer einzelnen Maschine.

Serialisierung bedeutet normalerweise das Schreiben der Daten als String (think: xml / json) oder als rohe Binärdatei (a byte[] etc). Deserialisierung ist der umgekehrte Prozess; die Rohdaten (aus einer Datei, von einem eingehenden Netzwerk-Socket usw.) und das Objektmodell rekonstruieren.

Der Unterschied zwischen der Verwendung einer db besteht darin, dass sie kein integrales Tabellenlayout und keine echte Verbindung zu einer Datenbank aufweist. Die Daten können eine beliebige Form haben und tendieren dazu, dem objektorientierten Layout mehr zuzuordnen als der Zeilen- / Spaltennatur von Tabellen.

Die meisten Plattformen haben eine Reihe von Serialisierungswerkzeugen. Zum Beispiel klingt es so, als würden Sie über .NET sprechen - also wären BinaryFormatter (.NET-spezifisch), XmlSerializer , DataContractSerializer , Json.NET und protobuf-net / dotnet-protobufs alle geeignet.

    
Marc Gravell 01.09.2009 05:19
quelle
5

Serialisierung = Setzen des relevanten Zustands des Objekts in eine streambare Darstellung. Das kann bedeuten, dass es in einen Byte-Stream konvertiert wird. Dies beinhaltet nicht notwendigerweise das Kopieren jeder Mitgliedsvariablen in den Stream. Ein klassisches Beispiel, das von Joshua Bloch in Effective Java verwendet wird, ist ein HashSet. Sie würden nur die Elemente im Hashset serialisieren, aber nicht die Schlüssel.

Deserialisierung = Wiederherstellung eines Objekts aus einer seriellen Darstellung und Sicherstellung der Invarianten des Objekts. Deserialisierung kann an einen separaten Konstruktor für das Objekt gedacht werden. Im Fall des oben erwähnten HashSets würden Sie ein neues HashSet erstellen und dann die Werte aus dem Stream in diese neue Datenstruktur einfügen.

    
jens 01.09.2009 05:20
quelle
3

Serialisierung bedeutet, dass Sie Ihr Objekt in einer Repräsentation halten, die Sie irgendwo speichern können. Eine Möglichkeit besteht darin, den Zeiger auf den Speicherort des Objekts zu setzen und jedes Byte so zu schreiben, wie es in einer Datei gespeichert ist. Da diese Darstellung sehr spezifisch für Ihre Programmiersprache ist (und wie sie Objekte im Speicher repräsentiert), wäre eine Verbesserung, Ihr Objekt in eine String-Repräsentation zu konvertieren, die eine bestimmte wohlbekannte Struktur (wie XML oder JSON) hat, so dass Sie kann

a) Übertragen Sie es einfacher

b) Speichern und wiederherstellen Sie es einfacher

c) Da jeder weiß, wie das Format definiert ist, können auch andere Programme Ihr Objekt lesen

Das Objekt in eine Datenbank zu bringen, ist also nur eine andere Form der Serialisierung.

Deserialisierung bedeutet, dass Sie das Objekt wieder von dort laden / wiederherstellen können, wo Sie es gespeichert haben.

    
Daff 01.09.2009 05:23
quelle
1

Bei der Serialisierung wird im Allgemeinen der Status eines Objekts in der Laufzeit auf die Festplatte geschrieben (aber es kann überall sein), und Sie können es erneut lesen.

Das Speichern der Eigenschaften eines Objekts in einer Tabelle ist eine Form der Serialisierung.

In .NET gibt es andere Formen:

  • XmlSerialisierung
  • BinarySerialization

Sie können sich Ihre eigenen zusammenstellen.

Aber im Allgemeinen, wenn Sie den Zustand Ihres Objekts irgendwo speichern und es dann wieder in ein "Live" -Objekt in Ihrer Runtime einlesen, werden Sie es serialisieren.

    
Noon Silk 01.09.2009 05:16
quelle
0

Serialisierung

Bei der Serialisierung wird ein Objekt oder eine Gruppe von Objektgraphen in einen Stream konvertiert.

Deserialisierung

Bei der Deserialisierung wird der Stream in ein Objekt oder eine Objektgrafik umgewandelt.

Hier sind einige benutzerdefinierte Attribute:

[OnDeserialization] - & gt; Es wird verwendet, wenn während der Deserialisierung des Streams eine Aktion ausgeführt werden muss. [OnDeserialized] - & gt; Es wird verwendet, wenn eine Aktion ausgeführt werden soll, nachdem der Stream in ein Objekt deserialisiert wurde. Wie zum Beispiel das richtige Setzen des Objektfeldwertes

Unten ist das Beispiel

%Vor%

Telefonvorwahl

%Vor%     
Sheo Dayal Singh 11.04.2017 10:08
quelle

Tags und Links