Dienstag, 20. August 2013

Generische Datenspeicherung mit XML - Teil 1 (Einleitung)

Problemstellung

Kennen Sie das Problem - Sie entwickeln eine kleine Applikation oder wollen nur mal schnell etwas ausprobieren und müssen in diesem Zusammenhang Daten persistent speichern (und es ist dabei egal wo und wie)? Dafür immer wieder eine Datenzugriffsschicht für eine Datenbank oder eine Datendatei neu implementieren zu müssen kostet oft einen unnötig hohen Zeitaufwand. Stellt sich die Frage "geht das nicht generisch?"

Genau mit dieser Frage werden wir uns in dieser Lecture beschäftigen ... und ich kann Ihnen jetzt schon verraten - ja, es geht! :-)

Aber Achtung: Die Zielsetzung dabei ist „einfach mal schnell“ Daten speichern zu können. Die Zielsetzung ist NICHT die hier vorgestellte Komponente in komplexeren Applikation mit hohen Performance-Ansprüchen, großer Flexibilität oder mit komplexen Datenstrukturen einzusetzen!

Lösungsansatz

Die prinzipielle Idee ist, die zu speichernden Daten in Form ihrer XML-Serialisierung als String zu speichern. Daraus folgend müssen wir also nur einmal eine generische Implementierung entwickeln, wie man einen String in einer Datenbank, in einer Datei bzw. in sonst einem Speicherort speichert - sprich: wie man also einen String in einem Data Storage speichert

Damit ist die erste wichtige Voraussetzung schon gegeben, für welche Art von Objekten diese generische Datenspeicherung verwendet werden kann: nur für Objekte, welche XML-Serialisierbar sind! Für die in unserem Fokus stehenden "einfachen" Klassen (wie z.B. eine User- oder Adress- Klasse) ist das allerdings keine relevante Einschränkung

Wichtiger ist eine andere Voraussetzung - wann immer wir Daten speichern und wieder lesen wollen, müssen wir diese auch identifizieren können. Jedes Objekt, welches in unserem Data Storage gespeichert werden soll, muss daher eine eindeutige ID haben

Ziel dieser Lecture

Ziel dieser Lecture ist es, Schritt für Schritt zu beschreiben, wie wir eine Komponente entwickeln, mit welcher die oben beschriebene generische Datenspeicherung einfach in einer Applikation integrierbar ist

Schritt für Schritt zu einer Komponente

Bevor wir uns mit Fragen der Realisierung auseinandersetzen, empfiehlt es sich im ersten Schritt kurz darüber nachzudenken, wie wir eine zu entwickelnde Komponente gerne selbst als Verwender einsetzen würden. Hier ein kurzes Stück Pseudo-Code, wie ich als User gerne mit der Komponente umgehen würde:

MyDataStorage.Save<User>(newUser) User existingUser = MyDataStorage.Find<User>("myUserName")

Der Data Storage sollte typsicher mit den zu speichernden Klassen umgehen können. Aus diesem Grund sehen wir die Verwendung von Generics vor

Als erstes werden wir uns jetzt allerdings mit den technisch notwendigen Fragestellungen auseinander setzen: Wir müssen, um die Lösungsidee umsetzen zu können, einen Weg finden, die XML-Serialisierungen von Objekten als Strings in einem Data Storage speichern zu können. Und dieser muss in verschiedenen Ausprägungen implementiert werden - z.B. mittels eines SQL Servers oder einer XML-Datei

Anschließend überlegen wir uns genauer, wie ein Verwender der Komponente deren Funktionalität am einfachsten in seiner Applikation nutzen kann. Statt der technischen Sichtweise fokussieren wir uns auf das Thema Usability

Im letzten Schritt soll es dann noch ermöglicht werden einen Data Storage einfach per WCF als Service zu veröffentlichen

... to be continued

Autor: Thomas Gysser | www.advadev.de

Keine Kommentare:

Kommentar veröffentlichen