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.