Was ist Serialisierung?
Bei der Computerprogrammierung wird bei der Serialisierung eine im lokalen Speicher gespeicherte Datenstruktur in einen Bytestrom umgewandelt, der über ein Netzwerk übertragen oder auf einer Platte gespeichert werden kann, um von einem anderen Programm wieder zusammengesetzt und verwendet zu werden. Die Serialisierung kann auch verwendet werden, um den Status eines Objekts zu speichern, damit es später von demselben Programm erneut geladen werden kann. Eine komplexere Verwendung dieser Funktion besteht darin, einen Remote Procedure Call (RPC) aufzurufen. Effizientes Ausführen einer Prozedur auf einem anderen Computer über ein Netzwerk Dieser Mechanismus ermöglicht auch die Verteilung von Datenobjekten über ein großes vernetztes System.
Nahezu jede moderne Computersprache bietet entweder native Unterstützung für die Serialisierung oder eine Bibliothek, um diese Funktionalität hinzuzufügen. Wenn ein Objekt serialisiert wird, werden alle Felder des Objekts abgeflacht. Dieser Vorgang wird auch als Deflation bezeichnet Die Daten werden in eine eindimensionale Reihe von Bytes umgewandelt, die in einen beliebigen Ausgabestream geschrieben werden können. Der Typ des Ausgabestreams spielt keine Rolle und kann eine Datei oder ein Netzwerk-Socket sein.
Sobald die Daten serialisiert und an ihren endgültigen Speicherort gesendet wurden, beginnt der Deserialisierungsprozess. Das Programm, das den Byte-Stream liest, stellt alle Informationen wieder her und platziert sie in einer neuen Instanz des ursprünglichen Objekts exakte Kopie Es ist wichtig zu verstehen, dass nur die Daten gemarshallt werden, die das Objekt enthielt. Dies bedeutet, dass das Programm, das die Daten deserialisiert, in der Lage sein muss, eine Instanz der Klasse zu erstellen, die ursprünglich serialisiert wurde.
Die Serialisierung von Datenstrukturen kann für eine Vielzahl von Zwecken verwendet werden: Objektinformationen können auf physischen Datenträgern gespeichert werden, sodass der genaue Zustand jedes Objekts bis zu dem Zeitpunkt wiederhergestellt werden kann, an dem die Programmausführung angehalten wurde Senden Sie Nachrichten an einen anderen Computer, um eine Remote-Prozedur auszuführen. Mithilfe der Serialisierung können Sie sogar Statusänderungen in Echtzeitanwendungen effizient vergleichen.
Bevor Sie die Objektserialisierung verwenden, müssen Sie einige der damit verbundenen Einschränkungen kennen: Am wichtigsten ist, dass beim Konvertieren eines Objekts in einen Byte-Stream Felder verfügbar gemacht werden, die als privat deklariert wurden Während der Übertragung des Streams können diese Daten erfasst und dekodiert werden und stellen eine Sicherheitslücke dar. Die meisten Sprachen ermöglichen die Externalisierung der Datenserialisierungsformate, sodass eine proprietäre Kodierung möglich ist helfen, dieses Risiko zu mindern.
Ein weiterer zu berücksichtigender Faktor ist, dass die Serialisierung im Allgemeinen nur mit Objekten funktioniert, die genau mit dem serialisierten Objekt identisch sind. Wenn einem Objekt neue Felder oder Methoden hinzugefügt werden Dann ändert sich die Signatur des Objekts. Dies bedeutet, dass das gespeicherte Objekt eine Ausnahme auslöst und die Daten nicht wiederherstellbar sind, bis eine Instanz des ursprünglichen unveränderten Objekts versucht, es wiederherzustellen.