VS one Veranstalter: VSone 13.-14. Feb. 08 Folie 1 Copyright by XML-Serialisierung zur Persistierung...

23
VS on e on e Veranstalter: VSone 13.-14. Feb. 08 Folie 1 Copyright by XML-Serialisierung zur Persistierung von Objekten Thomas Schissler [email protected]

Transcript of VS one Veranstalter: VSone 13.-14. Feb. 08 Folie 1 Copyright by XML-Serialisierung zur Persistierung...

Page 1: VS one Veranstalter: VSone 13.-14. Feb. 08 Folie 1 Copyright by XML-Serialisierung zur Persistierung von Objekten Thomas Schissler TSchissler@artiso.com.

VSoneone

Veranstalter:

VSone 13.-14. Feb. 08 Folie 1 Copyright by

XML-Serialisierung zur Persistierung von Objekten

Thomas Schissler

[email protected]

Page 2: VS one Veranstalter: VSone 13.-14. Feb. 08 Folie 1 Copyright by XML-Serialisierung zur Persistierung von Objekten Thomas Schissler TSchissler@artiso.com.

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

Page 3: VS one Veranstalter: VSone 13.-14. Feb. 08 Folie 1 Copyright by XML-Serialisierung zur Persistierung von Objekten Thomas Schissler TSchissler@artiso.com.

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

Page 4: VS one Veranstalter: VSone 13.-14. Feb. 08 Folie 1 Copyright by XML-Serialisierung zur Persistierung von Objekten Thomas Schissler TSchissler@artiso.com.

VSoneone

Veranstalter:

VSone 13.-14. Feb. 08 Folie 4 Copyright by

Technologische Grundlagen

Was ist Serialisierung???

Page 5: VS one Veranstalter: VSone 13.-14. Feb. 08 Folie 1 Copyright by XML-Serialisierung zur Persistierung von Objekten Thomas Schissler TSchissler@artiso.com.

VSoneone

Veranstalter:

VSone 13.-14. Feb. 08 Folie 5 Copyright by

Technologische Grundlagen

Was ist Serialisierung???

Page 6: VS one Veranstalter: VSone 13.-14. Feb. 08 Folie 1 Copyright by XML-Serialisierung zur Persistierung von Objekten Thomas Schissler TSchissler@artiso.com.

VSoneone

Veranstalter:

VSone 13.-14. Feb. 08 Folie 6 Copyright by

Technologische Grundlagen

Was ist Serialisierung???

Page 7: VS one Veranstalter: VSone 13.-14. Feb. 08 Folie 1 Copyright by XML-Serialisierung zur Persistierung von Objekten Thomas Schissler TSchissler@artiso.com.

VSoneone

Veranstalter:

VSone 13.-14. Feb. 08 Folie 7 Copyright by

Technologische Grundlagen

DemoEin erstes Beispiel

Page 8: VS one Veranstalter: VSone 13.-14. Feb. 08 Folie 1 Copyright by XML-Serialisierung zur Persistierung von Objekten Thomas Schissler TSchissler@artiso.com.

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

Page 9: VS one Veranstalter: VSone 13.-14. Feb. 08 Folie 1 Copyright by XML-Serialisierung zur Persistierung von Objekten Thomas Schissler TSchissler@artiso.com.

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

Page 10: VS one Veranstalter: VSone 13.-14. Feb. 08 Folie 1 Copyright by XML-Serialisierung zur Persistierung von Objekten Thomas Schissler TSchissler@artiso.com.

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

Page 11: VS one Veranstalter: VSone 13.-14. Feb. 08 Folie 1 Copyright by XML-Serialisierung zur Persistierung von Objekten Thomas Schissler TSchissler@artiso.com.

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

Page 12: VS one Veranstalter: VSone 13.-14. Feb. 08 Folie 1 Copyright by XML-Serialisierung zur Persistierung von Objekten Thomas Schissler TSchissler@artiso.com.

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

Page 13: VS one Veranstalter: VSone 13.-14. Feb. 08 Folie 1 Copyright by XML-Serialisierung zur Persistierung von Objekten Thomas Schissler TSchissler@artiso.com.

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

Page 14: VS one Veranstalter: VSone 13.-14. Feb. 08 Folie 1 Copyright by XML-Serialisierung zur Persistierung von Objekten Thomas Schissler TSchissler@artiso.com.

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

Page 15: VS one Veranstalter: VSone 13.-14. Feb. 08 Folie 1 Copyright by XML-Serialisierung zur Persistierung von Objekten Thomas Schissler TSchissler@artiso.com.

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

Page 16: VS one Veranstalter: VSone 13.-14. Feb. 08 Folie 1 Copyright by XML-Serialisierung zur Persistierung von Objekten Thomas Schissler TSchissler@artiso.com.

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

Page 17: VS one Veranstalter: VSone 13.-14. Feb. 08 Folie 1 Copyright by XML-Serialisierung zur Persistierung von Objekten Thomas Schissler TSchissler@artiso.com.

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

Page 18: VS one Veranstalter: VSone 13.-14. Feb. 08 Folie 1 Copyright by XML-Serialisierung zur Persistierung von Objekten Thomas Schissler TSchissler@artiso.com.

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

Page 19: VS one Veranstalter: VSone 13.-14. Feb. 08 Folie 1 Copyright by XML-Serialisierung zur Persistierung von Objekten Thomas Schissler TSchissler@artiso.com.

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

Page 20: VS one Veranstalter: VSone 13.-14. Feb. 08 Folie 1 Copyright by XML-Serialisierung zur Persistierung von Objekten Thomas Schissler TSchissler@artiso.com.

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

Page 21: VS one Veranstalter: VSone 13.-14. Feb. 08 Folie 1 Copyright by XML-Serialisierung zur Persistierung von Objekten Thomas Schissler TSchissler@artiso.com.

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]

Page 22: VS one Veranstalter: VSone 13.-14. Feb. 08 Folie 1 Copyright by XML-Serialisierung zur Persistierung von Objekten Thomas Schissler TSchissler@artiso.com.

VSoneone

Veranstalter:

VSone 13.-14. Feb. 08 Folie 22 Copyright by

Sessionvoting

Ich freue mich auf Ihr Feedback

DANKE!

Page 23: VS one Veranstalter: VSone 13.-14. Feb. 08 Folie 1 Copyright by XML-Serialisierung zur Persistierung von Objekten Thomas Schissler TSchissler@artiso.com.

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