it-swarm-eu.dev

Wenn XML so schlecht ist ... warum verwenden es so viele Leute?

Ich verstehe den Zweck von XML, aber ich höre immer Leute, die sich darüber beschweren, wie schlecht es ist. Ich verstehe nicht wirklich, was daran so schlimm ist? Normalerweise höre ich die Begriffe "aufgebläht" und "langsam".

Aber ich denke, als Programmierer, wofür verwenden Sie es hauptsächlich? Und halten Sie es wirklich für "schlecht" ... denn wenn es so ist, verwenden sehr viele Leute es für den Transport von Daten ...

37
user6791

Xml eignet sich hervorragend für das, wofür es entwickelt wurde - ein plattformneutrales, für Menschen lesbares Datenübertragungsprotokoll mit einigen Funktionen zur Durchsetzung der Datenvalidierung auf niedriger Ebene. Ich bezweifle, dass jemand, der XML auf diese Weise verwendet, eine echte Beschwerde hat. Ist es das prägnanteste Drahtformat? Nein, aber es gibt schlechtere Möglichkeiten. Ist es so schnell wie das Lesen Ihres benutzerdefinierten Binärformats? Nein. Ihre Geschäftspartner können es jedoch in jedem Stapel lesen, den sie verwenden.

Das Problem ist jedoch, dass Menschen - insbesondere die als Unternehmensarchitekten bekannte Rasse - böse sind und gute Dinge nehmen und sie schlecht machen. Im Fall von Xml sah Xml zu Beginn dieses Jahrhunderts den universellen Hammer für jedes IT-Problem. Wenn Sie ein kleines Design vom Komitee einstreuen, erhalten Sie einige schreckliche Monstrositäten wie SOAP und oXML . Beides sollte Feinden, egal Freunden oder Kollegen nicht gewünscht werden.

91
Wyatt Barnett

XML ist nur ein Tool, das in vielen Varianten und Verwendungszwecken erhältlich ist. XML zeichnet sich in einigen Dingen aus und nervt in anderen. Ich denke, eines der Probleme ist, dass die Leute "Enterprise" XML gesehen haben, das unnötig komplex ist mit Namespaces und Mist (SOAP, irgendjemand?). Der Trick beim Entwerfen von XML-Formaten für Menschen besteht darin, Daten eine echte Bedeutung zu verleihen, ohne sie beim Lesen zu überwältigen.

Eines der Probleme, mit denen Menschen Probleme haben, ist, dass XML manchmal an einem Zeichen oder einer fehlenden Klammer erstickt. Es gibt jedoch sowohl einen Vorteil als auch einen Nachteil. Der Vorteil ist, dass Sie keine Mehrdeutigkeit wie bei HTML haben, bei der verschiedene Fälle von halb ungültiger Syntax unterschiedlich interpretiert werden können.

Der Nachteil ist, dass es etwas schwieriger zu verfassen und schwieriger zu lernen ist. Ich bin damit einverstanden, dass argumentiert werden muss, dass das Web nicht so schnell zu groß geworden wäre, wenn HTML so streng wie XML gewesen wäre, aber ich würde auch argumentieren, dass wir uns freuen würden, wenn es heute so wäre. :) :)

Verwenden Sie es auch nicht für alles, nur weil Sie den Sinn und das Urteilsvermögen haben, es angemessen anzuwenden. Wenn Sie nur XML haben, sind Sie in der Regel immer eine XSLT-Transformation, die von Ihren Wünschen abweicht. :) :)

Ich würde argumentieren, dass das Format nur dann wirklich wichtig ist, wenn Menschen damit interagieren müssen. Wenn Sie ein Programm schreiben, das etwas serialisiert und an einen Ort sendet, an dem es von einem anderen Ihrer Programme verwendet werden soll, wen interessiert es dann, wie es aussieht, solange es so effizient wie möglich ist? Verwenden Sie ein Binärformat oder Hasen und Einhörner für alles, was mich interessiert.

Vorteile von XML

  • Deckt viele Edge-Fälle ab, die YAML und JSON nicht haben
  • Es gibt hervorragende Tools zum Parsen und Validieren von XML in einer Reihe verschiedener Plattformen und Sprachen
  • XML kann einfach und leistungsstark in ein anderes Format umgewandelt werden (z. B. durch XSLT).
  • Angemessene XML-Dokumente sind für Menschen einfach zu lesen und zu bearbeiten. Sag mir nicht, dass JSON einfacher ist, nicht :)
  • XML ist bis zu einem gewissen Grad selbstbeschreibend, d. H. Es enthält direkt Informationen über seine Struktur und Bedeutung (im Gegensatz zu den meisten Binärformaten).
  • Verarbeitet die Codierung
  • Whitespace-Agnostiker, der die plattformübergreifende Verwendung erleichtert
  • Bricht ab, wenn es nicht gut geformt ist (Stellt sicher, dass die Daten strukturell korrekt sind)
  • Es ist nicht SGML

Nachteile

  • Ausführlich
  • Es ist nicht so schnell zu analysieren wie binär
  • Bricht ab, wenn es nicht gut geformt ist (stürzt Ihre Anwendung ab)

Gute Verwendung

  • Konfigurationsdateien
  • Datenaustauschformate
  • Versionssichere Dateiformate
  • Speichern von Dokumenten in Datenbanken

Nicht so gut zu gebrauchen

  • Datenübertragungsformate
  • Objekte serialisieren
  • Speichern relationaler Daten in Datenbanken
  • Dateiformat für Hochleistungs-E/A-Szenarien
24
Homde

Jeff Atwood hat einen ziemlich guten Blog-Beitrag unter XML: The Angle Bracket Tax darüber, wenn Sie möchten, dass eine Quelle darüber spricht.

Die häufigsten Verwendungen, die ich dafür habe, sind:

  • Dienstleistungen, die miteinander sprechen. Beispielsweise muss eine Website, die ein Content-Management-System verwendet, einige Daten an ein Kundenbeziehungsmanagementsystem senden, und dies erfolgt mit XML.

  • Konfigurationsspeicher. Web.config und app.config sind gängige Beispiele, aber nAnt-Skripte können auch XML verwenden.

Ich denke nicht, dass es optimal ist, aber das allein macht es mir nicht schlecht.

14
JB King

Zwei Gründe:

  1. Es gibt sehr viele schlechte Programmierer da draußen. XML mag schlecht sein, aber es ist auch einfach (zumindest an der Oberfläche) und macht es sehr einfach, schlechte Software zu schreiben. Sorta wie VB.
  2. Viele Leute, die diese Entscheidungen treffen, sind keine Programmierer, sondern Geschäftstypen, die nur gehört haben, dass "jeder XML verwendet", und deshalb entscheiden sie, dass ihr Produkt auch XML verwenden soll.
11
Mason Wheeler

Normalerweise höre ich die Begriffe "aufgebläht" und "langsam".

Es ist nicht die kompakteste Syntax, aber eindeutig die ausdrucksstärkste. Für Menschen lesbar? hängt davon ab, wie Sie Ihre Sprache gestalten. Die meisten Leute entwerfen keine Sprache für XML, sondern serialisieren Objekte nur als XML.

… Warum benutzen so viele Leute es?

Es ist allgegenwärtig. Sie können eine XML-Datenbank mit XQuery abfragen, die Ergebnisse mit XSLT als XHTML oder Atom transformieren, Atom oder ein anderes XML-Format von anderen Webdiensten abrufen, XML von Benutzern mit XForms abrufen und mit XMLSchema validieren , Relax NG oder Schematron, verarbeiten Sie es mit XProc, speichern Sie es mit XQuery Update wieder in der Datenbank. Alle diese Tools verstehen XML, sodass keine Zuordnung zwischen verschiedenen Darstellungen erforderlich ist.

XML ist keine Serialisierungstechnologie, sondern ein allgemeiner Informationssatz.

8
Max Toro

Hier verwenden wir es für den Datenaustausch zwischen verschiedenen Systemen verschiedener Hersteller mit unterschiedlichen internen Darstellungen. Wir bauen ein XML-Transformations-/Austauschsystem auf, um die Daten hin und her zu transportieren. Dafür funktioniert es gut.

XML ist nicht von Natur aus schlecht, aber ich erkenne an, dass das Entwerfen einer "guten" Lösung mit XML nicht trivial ist.

"Die Essenz von XML ist folgende: Das Problem, das es löst, ist nicht schwer und es löst das Problem nicht gut." - Phil Wadler, POPL 2003

Meine persönliche Meinung ist, dass Sie einige gute Verwendungsmöglichkeiten für XML finden können, solange Sie sich nicht für Validierung, Schemata, XSLTs und den Rest des Hässlichen interessieren und die Größe der Dateien klein halten (andernfalls wird das Parsen langsam) dient zum Konfigurieren Ihrer Anwendung anstelle von INI Dateien).

5
sakisk

Nach meiner Erfahrung beschweren sich die Leute hauptsächlich über die Art und Weise, wie es verwendet wird, nicht über die Technologie selbst.

Die aufgeblähten und langsamen Teile, über die sich die Leute beschweren, sind normalerweise die Bibliotheken/Methoden, die verwendet werden, um Informationen daraus abzurufen.

Ich verwende es zum Speichern kleiner Mengen strukturierter Informationen, die ich auf der Festplatte speichern möchte (ohne Datenbank oder binäre Serialisierung) oder an eine andere Anwendung übergeben möchte (die im Wesentlichen SOAP) beschreibt.

4
Steven Evers

Es ist gut, weil :

Es ist ein Standard "Schnittstelle", mit dem mehrere heterogene Systeme kommunizieren können. Und ist "menschlich" lesbar (versuchen Sie es mit 5 MB XML)

Es ist schlecht, weil :

Seine aufgeblähte, größere Größe = mehr Bandbreite = mehr $$

Es gibt andere Gründe, jeder hat eine andere Beschwerde ...

2
Darknight

Wie bei jeder anderen Technologie: Es gibt viele verfügbare Tools und Bibliotheken.

Ich mag XML nicht, vor allem, weil es funky ist, wenn Leute sagen, dass es für Menschen lesbar ist, sie scherzen, denke ich, oder nie wirklich eine XML gelesen haben, als man versucht hat, XML in ein Attribut einzubetten ... die XML-Entitäten machen es wirklich unleserlich. Darüber hinaus ist es erstaunlich, wie viel Speicherplatz aufgrund des redundanten End-Tags und der Möglichkeit, freien Text und Daten zu mischen, verschwendet wird ...

aber :

  • XML kann angegeben werden (xsd) und es stehen Tools zur Verfügung, mit denen die Konformität von XML-Daten überprüft werden kann
  • viele Tools (Texteditoren und dergleichen) unterstützen XML
  • viele Bibliotheken (in fast jeder Programmiersprache) unterstützen XML

Meistens hat es auch den Vorteil der Vorrangstellung. Wenn Sie bereits Webdienste in XML bereitstellen und nach einem neuen Dienst fragen, wird dies wahrscheinlich in XML erfolgen, da Sie dies wissen.

2
Matthieu M.