tampons de protocole Google vs json vs XML [fermé]

230

J'aimerais connaître les mérites et les mérites de

  • Tampons de protocole Google
  • JSON
  • XML

Je veux implémenter un cadre commun pour deux applications, une en Perl et la seconde en Java. Donc, je voudrais créer un service commun qui peut être utilisé par les deux technologies, c'est-à-dire Perl et Java.

Les deux sont des applications Web.

Veuillez me faire part de vos précieuses réflexions et suggestions à ce sujet. J'ai vu de nombreux liens sur Google, mais tous ont des opinions mitigées.

Manoj Kathiriya
la source
9
Et vous pensez qu'il y aura probablement un consensus ici?
Barmar
1
Merci beaucoup. Mais j'aimerais en savoir plus sur les tampons de protocole vs JSON.
Manoj Kathiriya,
19
@Barmar Ce n'est pas un consensus, c'est un choix rationnel, des avantages et des inconvénients, c'est bien que la question ait été posée avant que la méta police ne commence à abaisser la qualité du contenu SO.
Boris Treukhov
Je m'opposais fermement à ce que ces questions soient arbitrairement fermées. Mais le fait est que si je consultais un projet qui devait faire ce choix, je souhaiterais beaucoup plus d'informations que ce qui apparaît généralement dans un article SO; tout conseil que vous obtiendrez ici est anecdotique et basé sur une ignorance presque complète des exigences et des contraintes de votre projet particulier.
Michael Kay

Réponses:

279

Json

  • lisible par l'homme / modifiable
  • peut être analysé sans connaître le schéma à l'avance
  • excellent support du navigateur
  • moins verbeux que XML

XML

  • lisible par l'homme / modifiable
  • peut être analysé sans connaître le schéma à l'avance
  • standard pour SOAP etc
  • bon support d'outillage (xsd, xslt, sax, dom, etc.)
  • assez verbeux

Protobuf

  • données très denses (petite sortie)
  • difficile à décoder de manière robuste sans connaître le schéma (le format des données est ambigu en interne et a besoin d'un schéma pour être clarifié)
  • traitement très rapide
  • non destiné aux yeux humains (binaire dense)

Tous ont un bon support sur la plupart des plateformes.

Personnellement, j'utilise rarement XML de nos jours. Si le consommateur est un navigateur ou une API publique, j'ai tendance à utiliser json. Pour les API internes, j'ai tendance à utiliser protobuf pour les performances. L'offre des deux sur l'API publique (via des en-têtes ou des points de terminaison séparés) fonctionne également bien.

Marc Gravell
la source
8
XML est plus de travail à décoder, mais la validation peut être un avantage majeur sur JSON. La validation de votre XML avec un schéma avant de traiter une transaction de paiement qu'il contient vous donne une couche supplémentaire de robustesse.
CC.
11
XML permet également un style narratif où le texte est alterné avec des inclusions de balises comme <value>This is a <attention>narrative style</attention>. Tags could appear <exclamation /> in the middle of text</value>. Il s'agit de la caractéristique unique de XML par rapport à JSON et aux tampons de protocole.
Paul
3
@Marc Gravell: Que diriez-vous en termes de compatibilité ascendante. J'ai l'impression que c'est l'un des gros arguments de vente de protobuf?
Thomas Ahle
1
Igor Ganapolsky, je crois comprendre que c'est à peu près conceptuellement impossible, car il y a très peu ou pas d'analyse nécessaire pour les protobuffs, tandis que la phase de traitement est longue et inévitable avec json.
Jules GM
3
Juste pour mentionner que vous pouvez également utiliser des schémas avec JSON.
Jesus Angulo