web-dev-qa-db-fra.com

Si XML est si mauvais ..... pourquoi tant de gens l'utilisent-ils?

Je comprends le but de XML, mais j'entends toujours des gens se plaindre de la façon dont c'est MAUVAIS? Je ne comprends pas vraiment ce qui est si mauvais à ce sujet? J'entends habituellement les termes "gonflé" et "lent" qui tournent.

Mais je suppose qu'en tant que programmeurs, pourquoi l'utilisez-vous principalement? Et le considérez-vous vraiment comme "mauvais" .... parce que si c'est le cas, beaucoup de gens l'utilisent pour le transport de données ...

37
user6791

Xml est idéal pour ce qu'il a été conçu: un protocole de transfert de données neutre sur la plate-forme et lisible par l'homme avec certaines capacités pour appliquer la validation des données à de faibles niveaux. Je doute que quiconque utilise Xml de cette manière ait une vraie plainte. Est-ce le format de fil le plus succint? Non, mais il y a de pires options. Est-ce aussi rapide que de lire votre format binaire personnalisé? Non. Mais vos partenaires commerciaux peuvent le lire dans la pile qu'ils utilisent.

Le problème, cependant, est que les humains - en particulier la race connue sous le nom d'architectes d'entreprise - sont mauvais et prennent les bonnes choses et les rendent mauvaises. Dans le cas de Xml, le début de ce siècle voyait Xml comme le marteau universel pour chaque problème informatique. Saupoudrez dans un petit design par le comité et vous vous retrouvez avec d'horribles monstruosités comme SOAP et oXML . Aucun de ces deux ne devrait être souhaité sur les ennemis, les amis ou collègues nevermind.

91
Wyatt Barnett

XML n'est qu'un outil qui se décline en plusieurs versions et utilisations. XML excelle dans certaines choses et aspire à d'autres. Je pense que l'un des problèmes est que les gens ont vu du XML "entreprise" qui est inutilement complexe avec des espaces de noms et de la merde éparpillés (SOAP, n'importe qui?). L'astuce pour concevoir des formats XML pour les humains consiste à ajouter un véritable sens aux données sans les rendre accablantes à lire.

L'une des choses que les gens contestent, c'est que XML s'étouffe parfois avec certains caractères ou certains supports manquants. Il y a cependant à la fois un avantage et un inconvénient. L'avantage est que vous n'avez pas d'ambiguïté comme avec HTML, où différents cas de syntaxe semi-invalide peuvent être interprétés différemment.

L'inconvénient est que c'est un peu plus difficile à créer et plus difficile à apprendre. Je conviens qu'il y a un argument à faire valoir que le Web ne serait pas devenu si grand si HTML si HTML était aussi strict que XML, mais je dirais également que nous serions heureux s'il le faisait aujourd'hui. :)

Aussi, ne l'utilisez pas pour tout simplement parce que vous le pouvez, ayez le sens et le jugement de l'appliquer de manière appropriée. Si tout ce que vous avez est XML, vous avez toujours tendance à être une transformation XSLT loin de ce que vous voulez. :)

Je dirais que le format n'a vraiment d'importance que lorsque les humains ont besoin d'interagir avec lui. Si vous écrivez un programme qui sérialise quelque chose et l'envoie quelque part où il doit être consommé par un autre de vos programmes, peu importe à quoi il ressemble tant qu'il est aussi efficace que possible? Utilisez un format binaire ou des lapins et des licornes pour tout ce que je veux.

Avantages de XML

  • Couvre un grand nombre de cas Edge que YAML et JSON ne font pas
  • Il existe d'excellents outils pour analyser et valider XML dans une gamme de plates-formes et de langages différents
  • XML peut être facilement et puissamment transformé en un autre format (grâce à des choses comme XSLT)
  • Les documents XML raisonnables sont simples à lire et à modifier pour les humains; ne me dites pas que JSON est plus facile, ce n'est pas :)
  • XML est auto-descriptif dans une certaine mesure, c'est-à-dire qu'il contient directement des informations sur sa structure et sa signification (contrairement à la plupart des formats binaires)
  • Gère l'encodage
  • Agnostique des espaces blancs, ce qui facilite l'utilisation multiplateforme
  • Se casse s'il n'est pas bien formé (garantit que les données sont structurellement correctes)
  • Ce n'est pas SGML

Les inconvénients

  • Verbeux
  • L'analyse n'est pas aussi rapide que binaire
  • Se casse s'il n'est pas bien formé (plante votre application)

Bonnes utilisations

  • Fichiers de configuration
  • Formats d'échange de données
  • Formats de fichiers résistants aux versions
  • Stockage de documents dans des bases de données

Pas si bon usage

  • Formats de transfert de données
  • Sérialisation d'objets
  • Stockage de données relationnelles dans des bases de données
  • Format de fichier pour les scénarios d'E/S hautes performances
24
Homde

Jeff Atwood a un assez bon article de blog sur XML: The Angle Bracket Tax à ce sujet si vous voulez qu'une source en parle.

Les utilisations les plus courantes que j'en ai sont:

  • Les services se parlent. Par exemple, un site Web utilisant un système de gestion de contenu doit envoyer des données dans un système de gestion de la relation client et cela se fait avec XML.

  • Stockage de configuration. Web.config et app.config sont des exemples courants, mais les scripts nAnt peuvent également utiliser du XML pour eux.

Je ne pense pas que ce soit optimal, mais cela ne me fait pas mal à l'esprit.

14
JB King

Deux raisons:

  1. Il y a énormément de mauvais programmeurs. XML peut être mauvais, mais il est également simple (au moins en surface) et rend très facile l'écriture de mauvais logiciels. Sorta comme VB.
  2. Beaucoup de gens qui prennent ces décisions ne sont pas des programmeurs, mais des types d'entreprises qui ont seulement entendu dire que "tout le monde utilise XML" et qui décident donc qu'ils souhaitent que leur produit utilise également XML.
11
Mason Wheeler

J'entends habituellement les termes "gonflé" et "lent" qui tournent.

Ce n'est pas la syntaxe la plus compacte, mais c'est clairement la plus expressive. Lisible par l'homme? dépend de la façon dont vous concevez votre langue. La plupart des gens ne conçoivent pas de langage pour XML, ils sérialisent simplement des objets en XML.

… Pourquoi tant de gens l'utilisent-ils?

C'est omniprésent. Vous pouvez interroger une base de données XML avec XQuery, transformer les résultats avec XSLT en XHTML ou Atom, obtenir Atom ou un autre format XML à partir d'autres services Web, obtenir XML auprès des utilisateurs utilisant XForms, le valider avec XMLSchema , Relax NG ou Schematron, traitez-le avec XProc, enregistrez-le de nouveau dans la base de données avec XQuery Update. Tous ces outils comprennent XML, donc il n'est pas nécessaire de mapper entre les différentes représentations.

XML n'est pas une technologie de sérialisation, c'est un ensemble d'informations à usage général.

8
Max Toro

Ici, nous l'utilisons pour l'échange de données entre différents systèmes réalisés par différents fournisseurs avec différentes représentations internes. Nous construisons un système de transformation/échange XML pour faire la navette entre les données. Ça marche bien pour ça.

XML n'est pas intrinsèquement mauvais, mais je reconnais que concevoir une "bonne" solution en utilisant XML n'est pas anodin.

"L'essence de XML est la suivante: le problème qu'il résout n'est pas difficile, et il ne résout pas bien le problème." - Phil Wadler, POPL 2003

Mon opinion personnelle est que tant que vous ne vous souciez pas de la validation, des schémas, des XSLT et des trucs moches et que vous gardez la taille des fichiers petite (sinon l'analyse devient lente), vous pouvez trouver de bonnes utilisations de XML (un exemple sert à configurer votre application au lieu d'utiliser INI).

5
sakisk

D'après mon expérience, les gens se plaignent principalement de la façon dont il est utilisé, pas de la technologie elle-même.

Les bits gonflés et lents dont les gens se plaignent sont généralement les bibliothèques/méthodes qui sont utilisées pour en extraire des informations.

Je l'utilise pour stocker de petites quantités d'informations structurées que je veux stocker sur disque (sans base de données ni sérialisation binaire), ou passer à une autre application (qui décrit essentiellement SOAP également).

4
Steven Evers

C'est bien parce que:

C'est un standard "Interface" avec lequel plusieurs systèmes hétérogènes peuvent utiliser pour communiquer. Et est "humain" lisible (en quelque sorte, essayez de regarder 5 Mo XML)

c'est mauvais parce que:

Sa taille gonflée et plus grande = plus de bande passante = plus de $$

Il y a d'autres raisons, tout le monde a un problème différent ...

2
Darknight

Comme pour toute autre technologie: il existe de nombreux outils et bibliothèques disponibles.

Je n'aime pas XML, surtout parce que c'est génial, quand les gens disent que c'est lisible par l'homme, ils plaisantent, je pense, ou n'ont jamais vraiment lu un xml quand on a essayé d'incorporer du xml dans un attribut ... les entités xml le rendent vraiment illisible. De plus, il est étonnant de voir combien d'espace est gaspillé à cause de la balise de fin redondante et de la possibilité de mélanger du texte et des données gratuits ...

Mais:

  • Xml peut être spécifié (xsd) et des outils sont disponibles pour vérifier la conformité des données Xml
  • de nombreux outils (éditeurs de texte, etc.) prennent en charge Xml
  • de nombreuses bibliothèques (dans tous les langages de programmation) prennent en charge Xml

Il a également l'avantage de la priorité, la plupart du temps. Lorsque vous fournissez déjà des services Web en Xml, et que l'on demande un nouveau service ... cela se fera probablement en Xml parce que c'est ce que vous savez.

2
Matthieu M.