bufory protokołów google vs json vs XML [zamknięte]

230

Chciałbym poznać zalety i zalety

  • Bufory protokołu Google
  • JSON
  • XML

Chcę wdrożyć jedną wspólną platformę dla dwóch aplikacji, jedną w Perlu i drugą w Javie. Chciałbym więc stworzyć wspólną usługę, z której mogłyby korzystać obie technologie, tj. Perl i Java.

Oba są aplikacjami internetowymi.

Proszę podzielić się ze mną cennymi przemyśleniami i sugestiami na ten temat. Widziałem wiele linków w Google, ale wszystkie mają różne opinie.

Manoj Kathiriya
źródło
9
I myślisz, że może tu być concensus?
Barmar,
1
Dziękuje bardzo. Ale chciałbym dowiedzieć się więcej o buforach protokołów vs JSON.
Manoj Kathiriya,
19
@Barmar Nie chodzi o konsensus, chodzi o racjonalny wybór, plusy i minusy, dobrze, że pytanie zostało zadane, zanim meta policja zaczęła obniżać jakość zawartości SO.
Boris Treukhov,
Kiedyś stanowczo sprzeciwiłem się samowolnemu zamykaniu takich pytań. Ale faktem jest, że gdybym konsultował się z projektem, który musiał dokonać tego wyboru, chciałbym o wiele więcej informacji, niż zwykle pojawia się w poście z SO; każda rada, którą tu otrzymasz, jest anegdotyczna i oparta na prawie całkowitej nieznajomości wymagań i ograniczeń twojego konkretnego projektu.
Michael Kay

Odpowiedzi:

279

Json

  • czytelny / edytowalny przez człowieka
  • można przeanalizować bez uprzedniej znajomości schematu
  • doskonała obsługa przeglądarki
  • mniej gadatliwy niż XML

XML

  • czytelny / edytowalny przez człowieka
  • można przeanalizować bez uprzedniej znajomości schematu
  • standard dla SOAP itp
  • dobra obsługa narzędzi (xsd, xslt, sax, dom itp.)
  • dość gadatliwy

Protobuf

  • bardzo gęste dane (mała wydajność)
  • trudne do dokładnego odkodowania bez znajomości schematu (format danych jest wewnętrznie niejednoznaczny i wymaga schematu do wyjaśnienia)
  • bardzo szybkie przetwarzanie
  • nieprzeznaczony dla ludzkich oczu (gęsty układ podwójny)

Wszystkie mają dobre wsparcie na większości platform.

Osobiście obecnie rzadko używam XML. Jeśli konsument jest przeglądarką lub publicznym interfejsem API, zwykle używam json. W przypadku wewnętrznych interfejsów API zwykle używam protokołu Protobuf do zwiększania wydajności. Oferowanie zarówno publicznego interfejsu API (za pośrednictwem nagłówków lub oddzielnych punktów końcowych) również działa dobrze.

Marc Gravell
źródło
8
XML to więcej pracy do odkodowania, ale sprawdzanie poprawności może być znaczącą przewagą nad JSON. Sprawdzanie poprawności kodu XML za pomocą schematu przed przetworzeniem zawartej w nim transakcji płatniczej zapewnia dodatkową warstwę odporności.
CC.
11
XML umożliwia także styl narracji, w której tekst jest na przemian z włączonymi znacznikami, takimi jak <value>This is a <attention>narrative style</attention>. Tags could appear <exclamation /> in the middle of text</value>. Jest to unikalna funkcja XML w porównaniu z JSON i buforami protokołów.
Paul
3
@Marc Gravell: Co powiesz na temat kompatybilności w przód? Mam wrażenie, że jest to jedna z największych zalet Protobuf?
Thomas Ahle,
1
Igor Ganapolski, rozumiem, że jest to praktycznie niemożliwe, ponieważ nie ma potrzeby analizowania protobuffów, podczas gdy faza przetwarzania jest długa i nieunikniona w przypadku JSON.
Jules GM
3
Wystarczy wspomnieć, że możesz używać schematów również w JSON.
Jesus Angulo,