구글 프로토콜 버퍼 대 JSON 대 XML [닫기]


230

나는 장점과 단점을 알고 싶다

  • Google 프로토콜 버퍼
  • JSON
  • XML

두 개의 응용 프로그램에 대해 하나의 공통 프레임 워크를 구현하고 싶습니다. 하나는 Perl과 다른 하나는 Java입니다. 따라서 Perl & Java 기술 모두에서 사용할 수있는 공통 서비스를 만들고 싶습니다.

둘 다 웹 응용 프로그램입니다.

이것에 대한 당신의 소중한 생각과 제안을 알려주십시오. 나는 구글에서 많은 링크를 보았지만 모두 의견이 혼합되어있다.


9
그리고 여기에 의견이있을 것 같아?
Barmar


1
고마워요 그러나 더 많은 프로토콜 버퍼 대 JSON을 알고 싶습니다.
Manoj Kathiriya

19
@Barmar 합의가 아니라 합리적인 선택, 찬반 양론에 관한 것입니다. 메타 경찰이 SO 콘텐츠의 품질을 낮추기 전에 질문을 한 것이 좋습니다.
Boris Treukhov

나는 그러한 질문들이 임의로 폐쇄되는 것에 강력히 반대했다. 그러나 사실,이 선택을해야하는 프로젝트에 대해 컨설팅을하고 있다면 SO 게시물에 일반적으로 나타나는 것보다 더 많은 정보를 원할 것입니다. 여기서 얻을 수있는 조언은 일화이며 특정 프로젝트의 요구 사항과 제약 사항에 대한 거의 완전한 무지를 기반으로합니다.
Michael Kay

답변:


279

제이슨

  • 인간 판독 가능 / 편집 가능
  • 스키마를 미리 몰라도 파싱 가능
  • 뛰어난 브라우저 지원
  • XML보다 덜 장황하다

XML

  • 인간 판독 가능 / 편집 가능
  • 스키마를 미리 몰라도 파싱 가능
  • SOAP 등의 표준
  • 우수한 툴링 지원 (xsd, xslt, sax, dom 등)
  • 꽤 장황한

프로토 버프

  • 매우 조밀 한 데이터 (작은 출력)
  • 스키마를 몰라도 견고하게 디코딩하기 어렵다 (데이터 형식은 내부적으로 모호하며 명확하게하기 위해 스키마가 필요함)
  • 매우 빠른 처리
  • 인간의 눈을위한 것이 아닙니다 (고밀도 바이너리)

모두 대부분의 플랫폼에서 잘 지원됩니다.

개인적으로 요즘에는 XML을 거의 사용하지 않습니다. 소비자가 브라우저 또는 공용 API 인 경우 json을 사용하는 경향이 있습니다. 내부 API의 경우 성능을 위해 protobuf를 사용하는 경향이 있습니다. 헤더 또는 별도의 엔드 포인트를 통해 퍼블릭 API를 모두 제공하는 것도 효과적입니다.


8
XML은 디코딩 작업이 많지만 유효성 검사는 JSON보다 큰 이점이 될 수 있습니다. 지불 트랜잭션을 처리하기 전에 스키마를 사용하여 XML의 유효성을 검사하면 견고성이 강화됩니다.
CC.

11
XML은 또한 텍스트가와 같은 태그 포함으로 대체되는 서술 스타일을 허용합니다 <value>This is a <attention>narrative style</attention>. Tags could appear <exclamation /> in the middle of text</value>. 이것은 JSON 및 프로토콜 버퍼와 비교할 때 XML의 고유 한 기능입니다.
Paul

3
@Marc Gravell : 앞으로 호환성 측면에서 어떻습니까. 이것이 protobuf의 가장 큰 판매 포인트 중 하나라고 생각합니다.
Thomas Ahle

1
이고르 가나 폴 스키 (Igor Ganapolsky) 이것은 프로토 타입에 필요한 파싱이 거의 없거나 전혀 없기 때문에 이것이 개념적으로 거의 불가능하다는 것을 이해합니다.
Jules GM

3
JSON과 함께 스키마를 사용할 수도 있습니다.
Jesus Angulo
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.