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 ...
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.
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.
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.
Deux raisons:
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.
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).
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).
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 ...
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:
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.