búferes de protocolo de Google vs json vs XML [cerrado]

230

Me gustaría saber los méritos y desventajas de

  • Buffers de protocolo de Google
  • JSON
  • XML

Quiero implementar un marco común para dos aplicaciones, una en Perl y la segunda en Java. Por lo tanto, me gustaría crear un servicio común que pueda ser utilizado por ambas tecnologías, es decir, Perl y Java.

Ambas son aplicaciones web.

Por favor, comparta sus valiosos pensamientos y sugerencias sobre esto. He visto muchos enlaces en google pero todos tienen opiniones encontradas.

Manoj Kathiriya
fuente
99
¿Y crees que es probable que haya un consenso aquí?
Barmar
1
Muchas gracias. Pero me gustaría saber más Protocol Buffers vs JSON.
Manoj Kathiriya
19
@Barmar 'No se trata de consenso, se trata de una elección racional, de pros y contras, es bueno que la pregunta se haya hecho antes de que la meta policía comience a reducir la calidad del contenido de SO.
Boris Treukhov
Solía ​​objetar fuertemente que tales preguntas se cerraran arbitrariamente. Pero el hecho es que si estuviera consultando un proyecto que necesitara hacer esta elección, me gustaría obtener mucha más información de la que normalmente aparece en una publicación SO; cualquier consejo que reciba aquí es anecdótico y se basa en una ignorancia casi completa de los requisitos y limitaciones de su proyecto en particular.
Michael Kay

Respuestas:

279

Json

  • legible / editable por humanos
  • se puede analizar sin conocer el esquema de antemano
  • excelente soporte de navegador
  • menos detallado que XML

XML

  • legible / editable por humanos
  • se puede analizar sin conocer el esquema de antemano
  • estándar para jabón, etc.
  • buen soporte de herramientas (xsd, xslt, sax, dom, etc.)
  • bastante detallado

Protobuf

  • datos muy densos (salida pequeña)
  • difícil de decodificar de manera sólida sin conocer el esquema (el formato de datos es internamente ambiguo y necesita un esquema para aclarar)
  • procesamiento muy rápido
  • no destinado a ojos humanos (binario denso)

Todos tienen un buen soporte en la mayoría de las plataformas.

Personalmente, rara vez uso XML en estos días. Si el consumidor es un navegador o una API pública, tiendo a usar json. Para las API internas, tiendo a usar protobuf para el rendimiento. Ofrecer ambos en API pública (ya sea a través de encabezados o puntos finales separados) también funciona bien.

Marc Gravell
fuente
8
XML es más trabajo para decodificar, pero la validación puede ser una gran ventaja sobre JSON. Validar su XML con un esquema antes de procesar una transacción de pago que contiene le brinda una capa adicional de robustez.
CC.
11
XML también permite un estilo narrativo donde el texto se alterna con inclusiones de etiquetas como <value>This is a <attention>narrative style</attention>. Tags could appear <exclamation /> in the middle of text</value>. Esta es la característica única de XML en comparación con JSON y Protocol Buffers.
Paul
3
@Marc Gravell: ¿Qué tal en términos de compatibilidad hacia adelante? ¿Tengo la impresión de que este es uno de los grandes puntos de venta de protobuf?
Thomas Ahle
1
Igor Ganapolsky, tengo entendido que esto es prácticamente imposible desde el punto de vista conceptual, ya que hay muy poco o ningún análisis necesario para los prototipos, mientras que la fase de procesamiento es larga e inevitable con json.
Jules GM
3
Solo por mencionar que también puedes usar esquemas con JSON.
Jesús Angulo