VSoneone
Veranstalter:
VSone 13.-14. Feb. 08 Folie 1 Copyright by
XML-Serialisierung zur Persistierung von Objekten
Thomas Schissler
VSoneone
Veranstalter:
VSone 13.-14. Feb. 08 Folie 2 Copyright by
Agenda
Technologische Grundlagen Wie funktioniert Serialisierung Limitierungen überwinden
Anwendungsgebiete Datenobjekte persistieren Eigene Konfigurationsdateien
Praxiserfahrungen
VSoneone
Veranstalter:
VSone 13.-14. Feb. 08 Folie 3 Copyright by
Vorstellung
Thomas Schissler Software-Architekt und Projektleiter artiso AG Schwerpunkte sind
Team Foundation Server Entwicklungsprozesse Software-Architektur und Software Design
Leiter der .net Developergroup Ulm (www.dotnet-ulm.de)
Blog : http://www.artiso.com/problog
VSoneone
Veranstalter:
VSone 13.-14. Feb. 08 Folie 4 Copyright by
Technologische Grundlagen
Was ist Serialisierung???
VSoneone
Veranstalter:
VSone 13.-14. Feb. 08 Folie 5 Copyright by
Technologische Grundlagen
Was ist Serialisierung???
VSoneone
Veranstalter:
VSone 13.-14. Feb. 08 Folie 6 Copyright by
Technologische Grundlagen
Was ist Serialisierung???
VSoneone
Veranstalter:
VSone 13.-14. Feb. 08 Folie 7 Copyright by
Technologische Grundlagen
DemoEin erstes Beispiel
VSoneone
Veranstalter:
VSone 13.-14. Feb. 08 Folie 8 Copyright by
Technologische Grundlagen
Was ist bei der XML-Serialisierung zu beachten? Es werden nur public-Properties serialisiert Die zu serialisierende Klasse braucht einen
parameterlosen Konstruktur Der kann aber auch private sein
Steuerung der Serialisierung erfolgt über Attribute
VSoneone
Veranstalter:
VSone 13.-14. Feb. 08 Folie 9 Copyright by
Technologische Grundlagen
Die wichtigsten Attribute [XmlAttribute(„Name“, DataType=„Type“)]
Das Property wird als XML-Attribut statt als XML-Element serialisiert
[XmlElement („Name“)] Steuert den Name des XML-Elements
[XmlIgnore] Ignoriert das Property beim serialisieren
[XmlInclude(typeof(class a))] Bindet abstrakte Klassen mit ein
VSoneone
Veranstalter:
VSone 13.-14. Feb. 08 Folie 10 Copyright by
Limitierungen und Lösungen
Problem: Nicht alle Datentypen lassen sich
serialisieren
Lösung: Einen eigenen Serialisierer schreiben
DemoDictionaries serialisieren
VSoneone
Veranstalter:
VSone 13.-14. Feb. 08 Folie 11 Copyright by
Limitierungen und Lösungen
Problem: Zyklische Referenzen lassen sich nicht
serialisieren
Lösung: Rück-Referenzen nicht mitserialisieren
DemoZyklische Referenzen
VSoneone
Veranstalter:
VSone 13.-14. Feb. 08 Folie 12 Copyright by
Datenobjekte persistieren
XML-Serialisierung kann zum Persistieren von Datenobjekten verwendet werden Vorteile:
Kein O/R-Mapping erforderlich. Persistierung funktioniert wie man sich das wünscht
Keine Systemvoraussetzungen wie Datenbankserver etc.
Hohe Performance Offener Datenstandard
VSoneone
Veranstalter:
VSone 13.-14. Feb. 08 Folie 13 Copyright by
Datenobjekte persistieren
XML-Serialisierung kann zum Persistieren von Datenobjekten verwendet werden Nachteile:
Suche nicht einfach realisierbar Mechanismen wie Locking, Transaktionen,
etc. müssen selbst nachgebaut werden Änderungen am Datenmodell ist bei
umfangreichen Daten problematisch
VSoneone
Veranstalter:
VSone 13.-14. Feb. 08 Folie 14 Copyright by
Datenobjekte persistieren
Mögliches Szenario: Index-Datei erstellen
Kann zur Datensatzauswahl verwendet werden, z.B. Tree, Liste etc.
Referenz zur Detail-Datei
Detail-Dateien bei Bedarf laden
DemoDatenpersistierung
VSoneone
Veranstalter:
VSone 13.-14. Feb. 08 Folie 15 Copyright by
Eigene Konfigurationsdateien
Szenario Konfiguration der Anwendung soll über
Property-Grid bearbeitbar sein
Problem Attribute für Property-Grid können nicht auf
Standard-Konfiguration angewendet werden
Lösung Eigene Konfigurationsklasse die einfach in
eine XML-Datei serialisiert wird
VSoneone
Veranstalter:
VSone 13.-14. Feb. 08 Folie 16 Copyright by
Eigene Konfigurationsdateien
Mögliches Szenario: Config-Klasse erstellen und mit Attributen
versehen Config-Klasse per XML-Serialisierung
speichern und wieder laden Config kann auch in der XML-Datei geändert
werden.
DemoKonfigurationsdatei
VSoneone
Veranstalter:
VSone 13.-14. Feb. 08 Folie 17 Copyright by
Praxiserfahrung
XML-Serialisierung eignet sich in bestimmten Fällen sehr gut zur Daten-Persistierung Persistierung in XML-Dateien funktioniert gut
und performant, wenn die Struktur passt Als Speicher kann auch eine SQL-Datenbank
genutzt werden Verwendung des XML-Datentyps Erlaubt Abfragen auf Elemente und Attribute Bietet O/R-Mapping Funktionalitäten
VSoneone
Veranstalter:
VSone 13.-14. Feb. 08 Folie 18 Copyright by
Praxiserfahrung
XML-Serialisierung kann zur effizienten Speicherung von Listen etc. in der Datenbank genutzt werden Statt einer referenzierten Tabelle kann die
Liste in einem XML-Feld abgelegt werden, wenn danach nicht selektiert werden soll
DemoListen mit LINQ
speichern
VSoneone
Veranstalter:
VSone 13.-14. Feb. 08 Folie 19 Copyright by
Praxiserfahrung
Mit Hilfe der XML-Serialisierung kann ein Deep-Clone eines Objektbaums erstellt werden. Weitverzweigte Objekte komplett mit allen
Unterstrukturen zu clonen ist nicht trivial Optional kann ein BinarySerializer genutzt
werden.
DemoDeep-Clone von
Objekten
VSoneone
Veranstalter:
VSone 13.-14. Feb. 08 Folie 20 Copyright by
Praxiserfahrung
Fazit Vor allem für Konfigurationsdateien ist die
XML-Serialisierung eine tolle Sache In bestimmten Fällen kann die Persistierung
mit Hilfe der XML-Serialisierung sehr elegant sein
Auch sonst lassen sich mit der XML-Serialisierung verschiedene Probleme lösen
VSoneone
Veranstalter:
VSone 13.-14. Feb. 08 Folie 21 Copyright by
Noch Fragen?
? Jetzt ist die Zeit dafür!
…oder Frage per E-Mail an [email protected]
VSoneone
Veranstalter:
VSone 13.-14. Feb. 08 Folie 22 Copyright by
Sessionvoting
Ich freue mich auf Ihr Feedback
DANKE!
VSoneone
Veranstalter:
VSone 13.-14. Feb. 08 Folie 23 Copyright by
Wir sehen uns wieder:
18.-19. Juni 2008Burghausenwww.ASP-konferenz.de
13.-14. Oktober 2008www.ADC08.de