Laden...

Serialisierung wozu?

Erstellt von feuerwehrmann vor 17 Jahren Letzter Beitrag vor 17 Jahren 3.565 Views
feuerwehrmann Themenstarter:in
76 Beiträge seit 2006
vor 17 Jahren
Serialisierung wozu?

Hallo!

Ich bin gerade in den Bemühungen C# zu lernen über die Serialisierung gestolpert. Ich konnte zwar ansatzweise herausfinden, was das bedeutet. Ich habe das ganze noch nicht so ganz verstanden. Deshalb heir ein paar Fragen, die sich mir stellen:
1.Wann muss eine Klasse Serialisierbar sein? 1.Wie muss eine Serialisierbare Klasse aufgebaut sein? 1.Was gibt es zu beachten?

Schonmal vielen Dank für eure Hilfe im Voraus.

Gruß Patrick

871 Beiträge seit 2005
vor 17 Jahren

Hallo feuerwehrmann,

1.) Eine klasse muss dann serialisierbar sein, wenn Du diese zur Laufzeit serialisieren willst (Die Instanz der Klasse persistieren um diese beispielsweise später wieder einlesen und weiterverwenden zu können oder um diese über das Netzwerk zu übertragen).
2.) Eine Serialisierbare Klasse unterscheidet sich bis auf das Attribut "Serializable" nicht von anderen Klassen und wird auch gleich benutzt. Das Attribut wird nur dazu benötigt damit der Serializer weiss dass diese Klasse persistiert werden kann/darf/soll.
3.) Es werden nur öffentliche member serialisiert.

Grüsse, Egon

6.862 Beiträge seit 2003
vor 17 Jahren

Serialisierung bezeichnet allgemein die Speicherung von Objekten in Binärdaten und Deserialisierung dann halt genau umgekehrt.

Serialisierbar müssen sie sein wenn du Objekte in Dateien etc. speichern willst(wird oft bei Einstellungsklassen so gemacht), oder wenn Objekte binär versendet werden sollen in Falle von Netzwerken oder auch über AppDomain Grenzen weg, also allgemein bei Remoting.

Prinzipiell reicht schon das [Serializable] Attribut um Klassen als Serialisierbar zu kennzeichen, funktioniert aber nur bei primitiven Datentypen bzw. wenn die Klassen die als Member benutzt werden selber serialisierbar sind.
Besser ist es aber das ISerializable Interface zum Implementieren, dann hast du viel mehr Freiheiten in der Implementation der Serialisierung.

Und naja, zu beachten sind viele Dinge, kommt aber stark auf die Anwendung drauf an. Gibt auch viele Themen hier im Forum, kannst ja einfach mal stöbern 🙂

Baka wa shinanakya naoranai.

Mein XING Profil.

S
8.746 Beiträge seit 2005
vor 17 Jahren

Es gibt verschiedenen Arten von Serialisierungen innerhalb von .NET (mind. 3). Die Auszeichnung mit dem Serializable-Attribut (bzw. ISerializable) ist nur dann nötig, wenn man mittels der Formatter-Klassen (Binary/SOAP) serialisiert (z.B. wenn man Remoting einsetzt). Für den XmlSerializer braucht es das nicht. Ggf. sind hier aber andere Attribute nötig.

Auch ist nur der XmlSerializer der Beschränkung unterworfen, nur öffentliche Member zu serialisierern.

T
512 Beiträge seit 2006
vor 17 Jahren

Irgendwie fällts schwer sich bei dem Userbild auf die Frage zu konzentrieren 😁

Wie war die gleich? Achja, Serialisieren.

Serialisiert wird dann, wenn ein Objekt die AppDomain verlässt.

Beispiele dafür sind:*Das Speichern des Objekts auf der Festplatte *Das kopieren in eine andere AppDomain (siehe AppDomain Klasse) *Senden des Objekts an eine andere Applikation (z.B. per TCP über ein Netzwerk)

Die restlichen Fragen sind so nicht zu beantworten, weil sie von der Art der Serialisierung abhängen.
Stichworte dafür wurden ja schon genannt: XmlSerializer und IXmlSerializable, SerializableAttribute und ISerializable

e.f.q.

Aus Falschem folgt Beliebiges

feuerwehrmann Themenstarter:in
76 Beiträge seit 2006
vor 17 Jahren

euch allen Danke für die Hilfe.

Jetzt habe ich verstanden, um was es bei der Serialisierung geht.

Gruß Patrick