Laden...

Mapping-Schicht für XML

Erstellt von ProgrammierTroll vor 12 Jahren Letzter Beitrag vor 12 Jahren 2.265 Views
ProgrammierTroll Themenstarter:in
107 Beiträge seit 2011
vor 12 Jahren
Mapping-Schicht für XML

verwendetes Datenbanksystem: <XML-Files>

Hallo,

ich bekomme von einem Kundensystem Daten in Form von XML-Files, welche gegen ein Schema validiert werden. Die XML-Files sind also Grundlage meiner DAC und ich möchte deshalb eine Art O(XML)Mapper anwenden.

Da ich leider wenig Erfahrung auf dem Gebiet habe, weiß ich nicht, ob es sowas bereits gibt. Die klassischen ORMs sind ja - wie der Name sagt - für relationale Datenbanken bestimmt. Natürlich könnte man auch die XML-Files in eine relationale Datenbank transformieren. Die Idee habe aber erst einmal als Unfug beiseite geschoben.

Meine erste Idee war, das Ganze mit "Linq to XML" zu Fuß zu programmieren. Allerdings würde ich mir die Arbeit auch gern ersparen, wenn es solche Tools bereits gibt.

Vielen Dank

q.e.d.

849 Beiträge seit 2006
vor 12 Jahren

Hallo Programmiertroll,

Du kannst dir mit der Xsd.exe (bei VS dabei) c# klassen erzeugen lassen und dann mit dem XmlSerializer arbeiten.

Grüße

G
497 Beiträge seit 2006
vor 12 Jahren

du könntest die XML-Dateien deserialisieren (entweder über einen eigenen Deserialisierer oder den, den das Framework mitbringt) und dann über ein Tool wie AutoMapper in deine Businessobjekte überführen.

ProgrammierTroll Themenstarter:in
107 Beiträge seit 2011
vor 12 Jahren

Ja, an Serialisierung habe ich auch schon gedacht. So wie ich das kenne, bedeutet das, dass ich nicht mehr mit normalen POJOS arbeiten kann und die Serialisierungslogik in den Businnes Objekten habe?

q.e.d.

849 Beiträge seit 2006
vor 12 Jahren

In diesem Fall wohl eher POCO´S 😉

aber es sind weitesgehend welche.. Wenn man von den Attributen absieht. Die Serialisierungslogik liegt eher im XmlSerializer.

ProgrammierTroll Themenstarter:in
107 Beiträge seit 2011
vor 12 Jahren

Scheint, als ich hätte ich das zu voreilig verworfen.
Es klingt schon sehr attraktiv. Ich denke, ich werde das Risiko einfach mal eingehen.

Danke 😁 👍

q.e.d.

N
335 Beiträge seit 2006
vor 12 Jahren

Hallo ProgrammierTroll,

vielleicht ist auch das XMLRepository-Projekt von Golo Roden und Peter Bucher was für dich:
http://www.xmlrepository.ch/

Mfg NeuroCoder

1.564 Beiträge seit 2007
vor 12 Jahren

Hi ProgrammierTroll

Es kommt darauf an was die Anforderungen an deine Anwendung sind.

Wenn's einfach nur darum geht alle XML Files zu verarbeiten und fertig würde ich einen sehr rudimentären "Mapper" verwenden der einfach File für File deserialisiert (z.B. mit dem XmlSerializer) und als Objekte zurückliefert. Hier stellt sich dann nur noch die Frage ob das von der XSD.exe erzeugte Objekt-Modell so aussieht wie es in deiner Business-Schicht Sinn macht, sonst müsstest du eine Transformation (in C# oder XSLT) dazwischenklemmen.

Wenn es eher um einen mächtigeren Store in Form von XML Files geht wird's spannend. Solange man alle 'Abfragen' aus den Dateinamen ableiten kann ist es noch recht easy, wenn du aber auf Referenzierende Dokumente zugreifen musst oder Abfragen auf Daten innerhalb der Files durchführst musst du mal schauen was es gibt (ich kenne das Repository von Golo und Peter nicht, kann die also nicht beurteilen) oder auf Low-Level XPath/XmlReader zurückgreifen.

Grüße
Flo

Blog: Things about Software Architecture, .NET development and SQL Server
Twitter
Google+

Je mehr ich weiß, desto mehr weiß ich was ich noch nicht weiß.

ProgrammierTroll Themenstarter:in
107 Beiträge seit 2011
vor 12 Jahren

Hallo Florian,

der Kunde möchte, dass mittels dieser XML-Files ein Datenaustausch der beiden Anwendungssysteme stattfindet. D.h., die beiden Anwendungen produzieren und konsumieren XML-Files, die die jeweils andere Anwendung verarbeiten kann.

Die XSDs dienen dabei als Spezifikationsgrundlage. Ich muss sicherstellen, dass ich XML-Files produziere, die valide sind. Da Änderungen vorkommen können, wollte ich eine zusätzliche Abstraktionsschicht einführen, damit ich etwas flexibler reagieren kann.

Das, was Golo Roden programmiert hat, war in etwa das, was ich mir auch in der Form etwa überlegt habe. Bis dahin, wusste ich allerdings nicht, dass man mit den VS-Tools so einfach Serialisieren/Deserialisieren kann. Skeptisch bin ich in der Tat bei der Frage, wie "zukunftssicher" ich mit dieser Lösung fahre.

Gruß
ProgrammierTroll

q.e.d.

1.564 Beiträge seit 2007
vor 12 Jahren

Hi

Gerade wenn du eigene DTOs dazwischen schiebst hast du eine gute Grundlage für Zukunftssicherheit. Deine Objekte bleiben damit von Änderungen in den Schnittstellen recht unberührt, du musst nur ggf. die Mapping-Schicht, welche in deinem Fall den DAL darstellt, anpassen.

XML als Zwischenformat zu verwenden sehe ich als einen sehr guten Ansatz. (Mache ich selbst immer so wenn ich kann.)

Grüße
Flo

Blog: Things about Software Architecture, .NET development and SQL Server
Twitter
Google+

Je mehr ich weiß, desto mehr weiß ich was ich noch nicht weiß.