Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

Hallo,

ich muss ein XML-over-Ethernet-Protokoll serverseitig implementieren.

Momentan habe ich sämtliche XML-Strukturen in Klassen definiert und serialisiere diese bei Bedarf.

Aktuell habe ich gerade von der Client-Seite XSD-Dateien für jede XML-Struktur gefunden.

Hat denn die Verwendung von XSD-Dateien in diesem Fall einen Sinn oder bleibe ich lieber bei meinen eigenen Implementationen ohne viel Overhead?

Was meint ihr?

XSD liefert einen strukturierten Datensatz und je nach Sprache gibt es dann passende Proxyklassen, die das Lesen/Erzeugen der XML direkt durchführen.

Generell würde ich die Frage bezügl Overhead nicht so pauschal angehen, denn es stellt sich die Frage nach den genauen Anforderungen an das System, z.B. Matrix Daten als XML zu transportieren ist sicherlich nicht so sinnvoll, wohin gegen eine Baumstruktur durchaus dafür gut geeignet ist

  • Autor

In der Protokollbeschreibung ist die XML-Struktur als XML angegeben. So habe ich es jetzt als Klassen nachgebaut, welche ich dann serialisiere.

Wie schon gesagt, habe ich zufällig in der Implementation der Clients (von einer Fremdfirma) die zugehörigen XSD-Dateien gefunden.

Jetzt stellt sich mir die Frage, ob es durch Verwendung dieser XSD-Dateien evtl. irgendwelche Vorteile gibt.

Generiere ich mit XSD.exe aus den XSD-Dateien Klassen, dann fehlt mir irgendwie jegliches Vererbungskonzept.

Beispiel:

Es gibt verschiedene Nachrichtentypen; für jeden Typ eine XSD-Datei.

In MEINER Implementation erben alle von einer Klasse/Interface (IMyData), welche die gemeinsamen Felder enthält (z.B. DataIdentifier, Time usw.)

Meine Sendemethode sieht so aus:

SendData(IMyData data)
Damit habe ich die Möglichkeit, in dieser Methode ohne Probleme z.B. DataIdentifier noch einzutragen Bei der XSD-Variante sind die Klassen alle eigenständig, da gibt es kein übergeordnetes Interface/Klasse. Dann müsste die Sendemethode irgendwie so aussehen:
SendData(Object data)

Hier ist ein nachträgliches Ändern nicht so schön machbar.

Mir ist hier der Vorteil von XSD-Verwendung nicht klar. Wenn es denn überhaupt einen gibt!?

Bearbeitet von steinadler

Jetzt stellt sich mir die Frage, ob es durch Verwendung dieser XSD-Dateien evtl. irgendwelche Vorteile gibt.

Generiere ich mit XSD.exe aus den XSD-Dateien Klassen, dann fehlt mir irgendwie jegliches Vererbungskonzept.

Man kann in XSD durchaus ein "Vererbungskonzept" erstellen (siehe XSD and polymorphism - Stack Overflow)

Mir ist hier der Vorteil von XSD-Verwendung nicht klar. Wenn es denn überhaupt einen gibt!?

XML Schema ist dafür gedacht, dass man die Struktur eines Dokumentes beschreibt und mit Hilfe des XSD diese Struktur validieren kann. Aufgrund dessen kann man dann auch direkt aus der XSD Klassencode genieren, so dass Änderungen in der Struktur durch automatische Prozesse übertragen werden können

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.