Question

Je fais beaucoup de programmation système où mes applications n'ont aucune chance d'être utilisées pour communiquer sur le Web ou être visionnées via un navigateur. Cependant, la direction a poussé à utiliser XML. Par exemple, si je veux garder un journal de temps, je pourrais utiliser un fichier texte comme ceci:

commande date heure projet
in 2008/09/23 08:00:00 PROJ1
change 2008/09/23 09:00:00 PROJ2
out 2008/09/23 12:00:00 PROJ2
en 2008/09/23 01:00:00 PROJ3
out 2008/09/23 05:00:00 PROJ3

Le code XML ressemblerait à quelque chose comme ceci:

<timelog> <timecommand cmd=in date=2008/09/23 time=8:00:00 proj=PROJ1/>
...
<timecommand cmd=out date=2008/09/23 time=5:00:00 proj=PROJ3/>
</timelog>

Certains des avantages initiaux de la version texte que je vois sont qu’elle est facilement lisible et analysable avec regex. Quels sont les avantages d'utiliser XML dans ce cas?

Était-ce utile?

La solution

Il n’ya absolument rien de mal à utiliser le formatage de données textuel. C'est la norme de facto depuis des décennies. Les grands systèmes financiers mainframe encore l'utilisent aujourd'hui. Les avantages sont qu'il est trivial à produire, trivial à consommer et incroyablement léger. Et qu'en est-il des fichiers journaux? Connaissez-vous une plate-forme de production qui ne ne génère pas son fichier journal au format texte délimité (Web, application, serveur de base de données)?

L'inconvénient des fichiers texte plats est que si le format change, vous devez modifier les extrémités producteur et consommateur de manière non triviale pour pouvoir prendre en charge le changement de format. Bien sûr, s'il ne s'agit que d'un humain consommant le résultat, il vous suffit de changer de producteur.

La beauté de XML réside dans le fait que l’analyse des données est indépendante non seulement des données mais du format des données. Logiquement, vous transmettez à la fois les données et le format de données, et le tour est joué! Tout fonctionne. Ce n'est pas exactement aussi simple, mais c'est la prémisse. Vous pouvez modifier le format des données, et vos producteurs et consommateurs ne doivent changer que de manière triviale (voire pas du tout).

Le pire de XML, c’est qu’il peut s’avérer un énorme chien de performance (SOAP any??) et très lourd. Vous payez certainement un prix pour son extensibilité. Il existe des cas où c'est absolument la solution technique optimisée pour un domaine de problèmes donné, et d'autres cas où ce n'est pas le cas.

Donc, s'il s'agit d'un simple journal lu par un humain, conservez-le dans un fichier plat. S'il s'agit d'une application simple qui communique avec une autre application et , les communications ne changeront pas de manière spectaculaire avec le temps, le fichier plat est définitivement plus rapide et plus léger à mettre en œuvre, mais XML n'est pas un mauvais choix. Si plusieurs applications doivent consommer les données que vous fournissez ou si le volume de la communication va changer, optez pour XML. La maintenance de l'interface sera plus facilement maintenue dans le temps si vous le faites.

Autres conseils

Quelques avantages me viennent à l’esprit:

  • Il est plus facile d'analyser d'autres applications
  • Il est plus facile de comprendre ce que le document contient en un coup d'œil
  • Facilite l'extraction de données dans un tableau de bord de gestion
  • Rend la gestion heureuse avec peu de peine pour vous

Les inconvénients, tels que je les vois:

  • signifie changer le code existant, probablement inutilement
  • Légère dégradation possible des performances, en fonction de la manière dont vous créez les documents par rapport à celle des documents actuels
  • C'est XML pour l'amour de XML, qui est effin 'stupide

Et pour terminer, une citation conçue comme ironie: XML, c'est comme la violence. Si cela ne résout pas vos problèmes, vous ne l'utilisez pas assez

La principale caractéristique de XML dans un cas comme celui-ci est que XML peut être validé & amp; contrôlé. Dans la version texte, comment pourriez-vous vérifier par programme que le fichier est correctement formaté? XML est conçu pour créer des documents structurés et valides. L'avantage qui en résulte est qu'un format est rigoureusement contrôlé et structuré de manière fiable. Maintenir le code qui lit à partir de nœuds XML va également être beaucoup plus facile et plus logique que de conserver une série d'expressions régulières pour la lecture de fichiers texte.

Si vous utilisez XML, alors, à certains égards, les données seraient plus & "portable &"; Des analyseurs syntaxiques pour vos données sont disponibles dans la plupart des environnements. Il peut donc être plus facile d’écrire un outil pour analyser les données. De plus, si vous utilisez le format XML, vous pouvez écrire un fichier XSLT pour le transformer en divers autres formats, ce qui facilitera sa lecture.

Cela dit, si vous passez à XML, même à un format simple comme celui que vous avez donné, vos fichiers journaux vont devenir beaucoup plus volumineux.

Vous pouvez utiliser certaines options autres que XML. Le blog de la taxe sur les cornières de Jeff en parle un peu.

En réalité, vous devez savoir comment ces journaux seront utilisés, puis déterminer le format qui facilitera la mise en oeuvre de ces utilisations.

Il est facile à analyser avec regex, xml et xsl.

À vrai dire, il n’ya pas vraiment de & "avantage &"; utiliser XML sauf si vous envoyez les données à un autre système.

XML est un méta-format, ce qui signifie qu'il est plus facile de définir un format pour vos données. Cela permet à plusieurs programmes, y compris ceux de différentes sociétés, de lire et d'écrire des données dans le même format. Il convient particulièrement à la description de données complexes et hiérarchiques.

Dans l'exemple que vous décrivez ci-dessus, les données semblent être des enregistrements isolés dans un format fixe, sans structure ni hiérarchie - auquel cas je ne vois aucun avantage à utiliser XML. Cependant, cet exemple peut ne pas être représentatif - vos autres fichiers peuvent contenir des données plus structurées.

S'agit-il d'un fichier journal en cours?

Comment allez-vous écrire pour créer un document valide? Ou allez-vous la lire, ajouter la nouvelle entrée et l'écrire à chaque fois?

Les fichiers journaux sont des candidats parfaits pour les lignes de texte brut bien structurées que vous ajoutez simplement.

Dans la plupart des cas (pas toujours), XML facilite la compréhension des données car tout à coup, vous disposez de ces métadonnées autour de votre actif, décrivant ce qui se trouve devant vous (lisible par l'homme).

XML est également très accessible. Ce que je veux dire par là, c'est que, puisque vous en avez parlé, vous ne voulez pas utiliser d'expressions régulières sur XML. Il existe des outils tels que XPATH (langage de chemin XML) qui rendent les interrogations XML amusantes. Nul besoin de sortir quelque chose que personne ne sait lire quand vous pouvez parcourir facilement le langage XML en utilisant quelque chose comme XPATH.

Il existe des cas où XML fait l'inverse (en termes de lisibilité) et parfois, XML est également un overhead. Ce n'est pas toujours le meilleur choix lorsque vous échangez des données entre systèmes (par exemple, jetez un coup d'œil à quelque chose de vraiment léger, tel que JSON ). Et ce type d’échange n’a pas besoin d’être sur le Web non plus.

Bien que l'utilisation de XML pour les fichiers de données signifie que vos données peuvent être auto-descriptives et peut-être mieux organisées, le résultat final est souvent des fichiers de données beaucoup plus volumineux qu'auparavant.

Demandez-vous à quoi servent les fichiers? Sont-ils à changer? Si oui, qui paie et qui a prévu le budget?

J'aime XML dans certains cas, et dans d'autres je le déteste!

Dans le cas de la programmation par lots de systèmes telle que celle que vous avez évoquée, l’un des principaux avantages du code XML est qu’il est pris en charge presque partout. Donc, vous écrivez un programme pour traiter certaines données aujourd'hui en utilisant XML, et dans 10 ans, lorsque vous aurez besoin de refondre ce programme et que vous souhaitez utiliser une plate-forme complètement différente, vos données XML seront toujours bien supportées.

Si vous développez en .NET (en particulier .NET 3.5 avec LINQ to XML), vous écrivez moins de code pour lire / écrire le XML que si vous utilisiez uniquement un fichier texte brut. De plus, XML facilite la lecture du fichier par toute personne en bout de ligne, qui sait exactement ce qu’il contient et à quoi il sert. Et, ne vous inquiétez pas du fait que le XML prenne un peu plus d'espace disque, l'espace disque est bon marché.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top