buffer di protocollo google vs json vs XML [chiuso]


230

Mi piacerebbe conoscere i meriti e i de-meriti di

  • Buffer di protocollo di Google
  • JSON
  • XML

Voglio implementare un framework comune per due applicazioni, una in Perl e una seconda in Java. Quindi, vorrei creare un servizio comune che può essere utilizzato da entrambe le tecnologie, ad esempio Perl e Java.

Entrambe sono applicazioni web.

Per favore, condividimi i tuoi preziosi pensieri e suggerimenti su questo. Ho visto molti link su google ma tutti hanno opinioni contrastanti.


9
E pensi che probabilmente ci sarà un consenso qui?
Barmar il


1
Grazie tante. Ma vorrei sapere più buffer di protocollo vs JSON.
Manoj Kathiriya, il

19
@Barmar Non si tratta di consenso, si tratta di scelte razionali, di pro e contro, è positivo che la domanda sia stata posta prima che la meta polizia iniziasse a ridurre la qualità dei contenuti SO.
Boris Treukhov,

Mi opponevo fortemente alla chiusura arbitraria di tali domande. Ma il fatto è che, se mi stessi consultando un progetto che doveva fare questa scelta, vorrei molte più informazioni di quelle che appaiono in genere in un post SO; qualsiasi consiglio che riceverai qui è aneddotico e basato sull'ignoranza quasi completa dei requisiti e dei vincoli del tuo particolare progetto.
Michael Kay,

Risposte:


279

jSON

  • leggibile / modificabile dall'uomo
  • può essere analizzato senza conoscere in anticipo lo schema
  • ottimo supporto per il browser
  • meno dettagliato di XML

XML

  • leggibile / modificabile dall'uomo
  • può essere analizzato senza conoscere in anticipo lo schema
  • standard per SAPONE ecc
  • buon supporto degli strumenti (xsd, xslt, sax, dom, ecc.)
  • piuttosto prolisso

Protobuf

  • dati molto densi (piccolo output)
  • difficile da decodificare in modo affidabile senza conoscere lo schema (il formato dei dati è internamente ambiguo e necessita di uno schema per chiarire)
  • elaborazione molto veloce
  • non destinato agli occhi umani (binario denso)

Tutti hanno un buon supporto sulla maggior parte delle piattaforme.

Personalmente, uso raramente XML in questi giorni. Se il consumatore è un browser o un'API pubblica, tendo a usare json. Per le API interne tendo a utilizzare protobuf per le prestazioni. Anche l'offerta su API pubbliche (tramite intestazioni o endpoint separati) funziona bene.


8
XML è più lavoro da decodificare, ma la convalida può essere un grande vantaggio rispetto a JSON. Convalidare l'XML con uno schema prima di elaborare una transazione di pagamento in essa contenuta offre un ulteriore livello di robustezza.
CC.

11
XML consente anche uno stile narrativo in cui il testo è alternato a tag inclusioni come <value>This is a <attention>narrative style</attention>. Tags could appear <exclamation /> in the middle of text</value>. Questa è la caratteristica unica di XML rispetto a JSON e Protocol Buffers.
Paul,

3
@Marc Gravell: Che ne dici di compatibilità con il futuro. La mia impressione è che questo sia uno dei maggiori punti di forza di protobuf?
Thomas Ahle,

1
Igor Ganapolsky è convinto che ciò sia praticamente concettualmente impossibile, in quanto per l'analisi dei protobuff è necessaria un'analisi minima o nulla, mentre la fase di elaborazione è lunga e inevitabile con JSON.
Jules GM,

3
Solo per citare che puoi usare anche schemi con JSON.
Jesus Angulo,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.