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.

Manoj Kathiriya
fonte
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.

Marc Gravell
fonte
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