Wie funktioniert die Serialisierung von Objekten? Wie wurde das Objekt deserialisiert und eine Instanz wird aus dem serialisierten Datum ohne Aufruf eines Konstruktors erstellt?Serialisierung von Objekten
Antwort
Ich habe diese Antwort Sprache Agnostiker gehalten, da eine Sprache nicht angegeben wurde.
Wenn das Objekt serialisiert ist, werden alle erforderlichen Informationen zum Neuaufbau in einer Weise codiert, die abgerufen werden kann. Dies umfasst normalerweise den Typ des Objekts sowie den Wert aller Instanzvariablen.
Wenn das Objekt deserialisiert wird, wird ein Bereich im Speicher der richtigen Größe zugewiesen und mit den serialisierten Informationen gefüllt, so dass das neue Objekt identisch mit dem serialisierten Objekt ist.
Das laufende Programm kann sich dann auf dieses neue Objekt im Speicher beziehen, ohne den Konstruktor tatsächlich aufrufen zu müssen.
Es gibt viele kleine Details, die dies nicht erklären, aber das ist die allgemeine Idee der Serialisierung/Deserialisierung.
+1 Ja denke ich darauf bezieht sich seine Frage. – TStamper
Sprechen Sie über Java? Wenn dies der Fall ist, ist die Serialisierung ein Mechanismus für die Erzeugung eines extralingualen Objekts. Es ist eine Hintertür, die nativen Code verwendet, um das Objekt ohne Aufruf von Konstruktoren zu erstellen. Daher müssen Sie beim Entwerfen einer Klasse für die Serialisierbarkeit sicherstellen, dass eine durch Deserialisierung erstellte Klasse die gleichen Invarianten (Schlüsselfelder, die initialisiert werden) wie den Konstruktorpfad verwaltet. Eine dritte Möglichkeit zum Erstellen von Objekten in Java ist das Klonen, und ähnliche Probleme treten auf.
Cloning und Serialisierung interagieren nicht gut mit der Verwendung von endgültigen Feldern, wenn Sie den Wert dieses Felds auf etwas anderes einstellen müssen als das, was vom Klon- oder Deserialisierungsprozess zurückgegeben wird.
Josh Blochs "Effektives Java" enthält einige Kapitel, in denen diese Probleme genauer erläutert werden.
(diese Antwort auf andere Sprachen gelten, aber ich habe nur die Serialisierung in Java verwendet)
In Bezug auf .NET: diese Antwort keine endgültige oder Lehrbuch ist, und ich könnte all-out falsch sein ...
. NET Serialisierung muss in Binär gegenüber anderen (XML oder ein XML-Derivat typischerweise) getrennt werden. Binäre Serialisierung ist für mich meistens eine Black-Box, aber es erlaubt dem Objekt, in ihrem aktuellen Zustand serialisiert und wiederhergestellt zu werden. Bei der XML-Serialisierung werden die öffentlichen Felder/Eigenschaften eines Objekts normalerweise nur serialisiert, sofern sie nicht durch Hinzufügen einer benutzerdefinierten ISerializable-Implementierung überschrieben werden.
Im Fall der XML-Serialisierung glaube ich, dass .NET Reflection verwendet, um zu bestimmen, welche Felder und Eigenschaften in die entsprechenden Elemente konvertiert werden. Durch Hinzufügen eines [XMLSerializable] -Attributs wird ein Standardverhalten implementiert, das durch Anwenden anderer Attribute auf Feldebene (wie [XMLAttribute]) angepasst werden kann.
Die Metadaten (von denen Reflection abhängt) speichern alle Objektelemente sowie deren Attribute und Adressen, wodurch der Serializer bestimmen kann, wie er die Ausgabe erstellen soll.
- 1. Serialisierung von benutzerdefinierten Objekten
- 2. Serialisierung von TypeSafe Config-Objekten
- 3. Serialisierung von Objekten zu JSON mit play.api.libs.json
- 4. Linux -> C++ - Code: Serialisierung von Objekten
- 5. MongoDB C# Treiber Serialisierung mit dynamischen Objekten
- 6. Java-Serialisierung und Umgang mit Objekten
- 7. Automatische JSON-Serialisierung und Deserialisierung von Objekten in Swift
- 8. PHP Serialisierung von Objekten, deren Eigenschaften sich entwickeln (Objektentwicklung)
- 9. Serialisierung von Objekten in eine Textdatei: Welche API/Framework?
- 10. Binary (De) Serialisierung eines Stromes von Objekten in 1 Datei
- 11. Serialisierung von LINQ-Objekten zu JSON-Strings - RIESIGE Strings
- 12. DateTimeOffsetAdapter, das die WCF-Serialisierung von DateTimeOffset-Objekten beeinträchtigt
- 13. Serialisierung von Objekten: kein Thread-Status kann beteiligt sein, oder?
- 14. Serialisierung von Java- und Scala-Objekten mit Scalatra
- 15. XML-Serialisierung von Arrays
- 16. Debuggen von BinaryFormatter-Serialisierung
- 17. Serialisierung von Sammlungen in .net
- 18. Serialisierung von Fremdschlüsselobjekten in Django
- 19. SQLite oder Serialisierung
- 20. Serialisierung von Array mit Objekten zu JSON in WCF zur Einhaltung von OpenSearch
- 21. Xml Serialisierung von Objekten und Hinzufügen von Elementen auch bei fehlenden Werten
- 22. Verwendung von WebClient für die JSON-Serialisierung?
- 23. Serialisierung von Strukturen
- 24. Serialisierung von privaten Mitgliedsdaten
- 25. Benutzerdefinierte Serialisierung von Basisklasseneigenschaften
- 26. RavenDB Serialisierung von NameValueCollection
- 27. Array von Objekten innerhalb Array von Objekten
- 28. JSON.Stringify versus Serialisierung
- 29. Objekte speichern/Serialisierung
- 30. PHP handgemachte Serialisierung Problem
http://forum.codecall.net/csharp-tutorials/7918-tutorial-visual-studio-2008-c-serialization.html –
lassen Sie mich wissen, wenn dies nicht Ihre Antwort ist .. –