2008-09-26 12 views
5

Wir verwenden den XML-Datentyp in Microsoft SQL Server 2005 für ein Projekt. Einige Mitglieder des Teams und ich sind der Meinung, dass wir auch XSDs verwenden sollten, während Mitglieder des anderen Camps das Gefühl haben, dass wir die XML ad hoc halten und sie nicht als "Typen" behandeln sollten.Was sind die Vor- und Nachteile der Verwendung von XML-Schemas?

Die XMLs sind ein Versuch, Struktur und Zentralität für eine Reihe von Textkonfigurationsdateien zu schaffen, die einen Wartungsalarm darstellen.

Wir verwenden .NET 3.5/C# und unsere Tabellen sind mit den entsprechenden Datentypen entwickelt. Mein Argument ist, dass wir bereits "typenorientiert" in unserem Denken sind, warum brechen Sie diesen Ansatz, weil es XML ist. Wegen des Mangels an Typen mit den Textdateien ist das ursprüngliche Problem aufgetreten. Wenn wir keinen "Typen" -Ansatz verwenden, bleiben wir für das gleiche Problem offen.

Vielleicht ist mein Verständnis der Vorteile von XML-Schemas inkorrekt. Was sind also die Vor- und Nachteile der Verwendung von XML-Schemas?

Antwort

2

Leider versteht sogar der Autor von XSD (W3C), dass XSD eine ziemlich schlechte Technologie ist. Das heißt, seine Absicht ist nicht unbedingt schlecht. Einer der wichtigsten Vorteile von C# ist, dass es statisch typisiert ist. Wenn Sie Ihre XML-Dokumente statisch eingeben, erhalten Sie dieselben Vorteile. Was wahrscheinlich am besten ist, ist das Reverse-Engineering Ihrer Klassen, um das Schema mithilfe der XML-Serialisierungsattribute zu erstellen. Wenn Sie dies tun, erstellt C# einen benutzerdefinierten Datenleser für Ihre XML-Datei, der die Leistung erheblich verbessert.

Einer der größten Kosten von XML ist, dass es String-analysiert werden muss. Je mehr Annahmen Sie über Ihre XML-Dateien machen können (z. B. ihre Struktur), desto besser ist Ihre Leistung wahrscheinlich.

Also letztlich wie viele Dinge, ist ihre genug von einem Leistungsbedarf, um die Kosten in der Entwicklerzeit zu rechtfertigen. Oder gibt es einen starken Wunsch, statisch typisierte Systeme zu verwenden, um die Kosten des Schreibens der XSD zu rechtfertigen.

Letztendlich bestimmen die Anforderungen Ihres Projekts, was Sie tun sollten, aber statische Typisierung und Leistung sind wichtige Vorteile, die es zu berücksichtigen gilt.

2

Das Speichern eines XML-Repository ohne XSD ist (meiner Meinung nach) mit einer Datenbank vergleichbar, in der alle Typen als VARCHAR (n) deklariert sind. Es ist dir egal, welche Art von Input du bekommst, du willst nur Input.

XSDs stellen sicher, dass Ihre XML-Dateien die Art von Eingaben haben, die Sie erwarten. Sie geben Ihrem Modell Struktur, genau das, wonach Sie suchen.

+2

Wenn Sie nicht gesagt haben, ich würde gehen. XML ohne Schema, ist nur einfacher Text! – leppie

1

Ein großer Vorteil bei der Verwendung von Schemas ist, dass sichergestellt wird, dass alle Beteiligten im Projekt übereinstimmen, wie ein XML-Dokument angelegt werden sollte. Außerdem können Sie mithilfe von Schemas die Validierung in Ihrem XML-Parser aktivieren, sodass Sie leichter erkennen können, wenn ein Teil des Codes fehlschlägt, weil ihm ein fehlerhafter XML-Code zugewiesen wurde.

Auf der anderen Seite kann das Aufrechterhalten von Schemas ein Schmerz sein, und es ist möglicherweise nicht die Mühe wert, abhängig von Ihrem Projekt.

1

Wenn Sie kein Schema haben, werden Sie am Schluss alle Validierungen selbst implementieren (oder gar nicht validieren und bei ungültigen Eingaben abstürzen). XSD-Parser/Validierer erledigen all das für Sie und werden von Experten in ihrer Domäne optimiert und debuggt. Warum sollten Sie all diese Arbeit selbst wiederholen?

2

Nun, wie in den anderen Posts und in der Frage gesagt, stellt XSD sicher, dass Sie den richtigen Typ an der richtigen Stelle in Ihrem XML verwenden und dass Sie zweimal überlegen müssen, bevor Sie seine Struktur ändern.

Aber XSD ist wirklich übertrieben, wenn ich das sagen kann. Und es ist manchmal wirklich ein Chaos, eine komplexe Struktur mit bedingten Inhalten zu beschreiben.

Hoffentlich, XSD ist nicht die einzige Möglichkeit, ein XML zu validieren, ist ein viel einfacherer Ansatz zu verwenden RelaxNG, und vor allem seine kompakte Syntax, die wirklich lesbarer ist als das, was Sie jemals mit XSD vorstellen könnte.

1

XSDs sind nicht das einzige verfügbare XML-Schema. Verwenden Sie stattdessen http://relaxng.org/. RelaxNG lässt Sie das Schema in XML ausdrücken, anstatt dass Sie noch eine weitere Daten- "Sprache" wie XSDs lernen müssen.

0

Ein wichtiger Grund für die Entwicklung von XML ist, dass es die Verwendung von Daten aus mehr Quellen und in mehrerlei Hinsicht ermöglicht, da es zu einem allgemein akzeptierten Standard für den Datenaustausch zwischen einer beliebigen Anzahl von Computersystemen geworden ist.

Verwandte Themen