buffers de protocolo do Google vs JSON vs XML [fechado]


230

Gostaria de conhecer os méritos e os méritos de

  • Buffers de protocolo do Google
  • JSON
  • XML

Eu quero implementar uma estrutura comum para dois aplicativos, um em Perl e o segundo em Java. Então, gostaria de criar um serviço comum que possa ser usado pelas duas tecnologias, por exemplo, Perl e Java.

Ambos são aplicativos da web.

Por favor, compartilhe-me seus valiosos pensamentos e sugestões sobre isso. Eu já vi muitos links no google, mas todos têm opiniões contraditórias.


9
E você acha que provavelmente haverá um consenso aqui?
— Barmar


1
Muito obrigado. Mas gostaria de saber mais Buffers de Protocolo vs JSON.
— Manoj Kathiriya

19
@ Barmar Não se trata de consenso, é de escolha racional, de prós e contras, é bom que a pergunta tenha sido feita antes que a meta polícia começasse a diminuir a qualidade do conteúdo de SO.
— Boris Treukhov

Eu costumava contestar fortemente que essas perguntas fossem fechadas arbitrariamente. Mas o fato é que, se eu estivesse consultando um projeto que precisava fazer essa escolha, desejaria muito mais informações do que normalmente aparece em um post da SO; qualquer conselho que você receber aqui é anedótico e se baseia na quase completa ignorância dos requisitos e restrições de seu projeto em particular.
— Michael Kay

Respostas:


279

Json

  • legível por humanos / editável
  • pode ser analisado sem conhecer antecipadamente o esquema
  • excelente suporte ao navegador
  • menos detalhado que XML

XML

  • legível por humanos / editável
  • pode ser analisado sem conhecer antecipadamente o esquema
  • padrão para SOAP etc
  • bom suporte de ferramentas (xsd, xslt, sax, dom, etc)
  • bem detalhado

Protobuf

  • dados muito densos (saída pequena)
  • difícil de decodificar com robustez sem conhecer o esquema (o formato dos dados é internamente ambíguo e precisa do esquema para esclarecer)
  • processamento muito rápido
  • não destinado a olhos humanos (binários densos)

Todos têm bom suporte na maioria das plataformas.

Pessoalmente, raramente uso XML hoje em dia. Se o consumidor for um navegador ou uma API pública, costumo usar o json. Para APIs internas, costumo usar o protobuf para desempenho. A oferta de API pública (por meio de cabeçalhos ou pontos de extremidade separados) também funciona bem.


8
XML é mais trabalho para decodificar, mas a validação pode ser uma grande vantagem sobre o JSON. A validação do seu XML com um esquema antes de processar uma transação de pagamento que ele contém fornece uma camada extra de robustez.
— CC.

11
XML também permite um estilo narrativo em que o texto é alternado com inclusões de tags como <value>This is a <attention>narrative style</attention>. Tags could appear <exclamation /> in the middle of text</value>. Esse é o recurso exclusivo do XML quando comparado ao JSON e aos Buffers de Protocolo.
— Paul

3
@ Marc Gravell: Que tal em termos de compatibilidade com a frente. Tenho a impressão de que esse é um dos grandes pontos de venda do protobuf?
— Thomas Ahle

1
Igor Ganapolsky, entendo que isso seja praticamente impossível conceitualmente, pois há muito pouca ou nenhuma análise necessária para protobuffs, enquanto a fase de processamento é longa e inevitável com json.
— Jules GM

3
Apenas para mencionar que você também pode usar esquemas com JSON.
— Jesus Angulo
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.