Google 프로토콜 버퍼 : JavaScript 예제


80

JavaScript에서 Google 프로토콜 버퍼를 사용하는 것이 좋은 선택입니까, 아니면 JSON으로 수행하는 것이 더 낫습니까?

또한 누군가 나에게 JavaScript에서 프로토콜 버퍼 구현에 대한 간단한 예제를 줄 수 있다면 좋을 것입니다. Google 사이트의 문서는 거의 없습니다.


4
이 SO 스레드에는 주제에 대한 자세한 정보가 포함되어 있습니다. stackoverflow.com/questions/7074147/…
alavrik

답변:


74

Google의 오픈 소스 프로토콜 버퍼 구현은 github에서 사용할 수 있습니다.


공식 protobuf 프로젝트는 Java, C ++ 및 Python 만 지원합니다. 자바 스크립트가 아닙니다.

프로젝트의 Wiki에 따르면 프로토콜 버퍼를 Javascript로 포팅하는 세 가지 프로젝트가 있습니다.

Protobuf.js는 최신 버전입니다. protobuf-js는 2 년 동안 업데이트되지 않았으므로 Protobuf.js를 선호합니다.

질문은 여전히 ​​"왜"입니까? : protobuf는 특히 많은 숫자 값이 전송되는 경우 약간 더 작을 수 있지만 JSON은 JS 공간에서 더 일반적인 프로토콜이며 아마도 더 잘 지원되고 다른 도구에 통합하기 더 쉽습니다.


11
JSON이 대부분의 경우에 더 적합하다는 것은 의심의 여지가 없습니다. 그러나 내 경우에는 메시지 발신자가 내 통제하에 있지 않으며 protobuf 메시지로 직렬화되므로 javascript에서 메시지를 구문 분석해야합니다.
Jan Segre 2013 년

21
@Why : 메시지와 서비스 메서드를 proto로 작성하고 코드의 골격을 무료로 얻었 기 때문입니까? 클라이언트 / 서버 측에서 직렬화 및 역 직렬화.
Paweł Szczur 2013 년

13
이유 : 다른 상황에서 protobuf를 사용하는 동일한 이유입니다. 이제 브라우저에 WebSocket이 있다는 것을 잊지 마십시오. 또한 데스크톱 애플리케이션은 Windows 8 용 JS로 작성하고 Node.js에서는 서버를 포함한 애플리케이션을 작성할 수 있습니다.
Sprague

4
코드 기후에 큰 작성자가 JSON을 통해 protobuf의 장점
요르단

5
시스템의 API에 이미 Android 또는 iOS 기기와 같은 다른 바이너리 / protobuf 클라이언트가있는 경우, 지원을 위해 JSON을 제공하는 API의 두 번째 사본을 빌드하는 것보다 자바 스크립트 웹 클라이언트 용 기존 proto API를 사용하는 것이 더 자연 스럽습니다. 웹 페이지.
Zero Trick Pony

36

업데이트 (2016 년 7 월 28 일) : 릴리스 3.0.0이 게시 되어 몇 가지 다른 기능 외에도 Javascript 및 기타 언어도 지원합니다.

Google은 최근 protobufs에 JS에 대한 알파 지원을 추가했습니다. https://github.com/google/protobuf/releases/tag/v3.0.0-beta-2

용법:

protoc -I=$SRC_DIR --js_out=$DST_DIR $SRC_DIR/addressbook.proto

릴리스 문서의 스크린 샷 :

여기에 이미지 설명 입력

여기에 이미지 설명 입력


위의 명령을 실행하는 동안 "입력 파일 누락"오류가 발생합니다.
Zeeshan Ajmal


-1

Protostuff를 사용해보십시오 !

구성하는 데 약간의 어려움이 있었지만 그것이 내 문제에 더 가깝다고 확신합니다. JSON으로 /에서 protobuff / protostuff 메시지를 직렬화 / 역 직렬화 할 수 있습니다. 나는 이것을 사용하는 초기 단계에 있지만 지금까지는 유망 해 보입니다.


1
궁금한. 왜이 투표가 거부 되었습니까 (Protostuff에 대한 의견이 없습니다)?
Pimin Konstantin Kefaloukos 2013 년

9
@Pimin 아마도 protostuff가 Java이고 질문이 JavaScript이기 때문일까요?
Marc Gravell

1
@PiminKonstantinKefaloukos 사람이 자바 스크립트에서
holms

2
Protostuff를 사용하여 GWT 용 자바 스크립트 객체 빌드 : code.google.com/p/protostuff/wiki/GwtJsonOverlays . 완전히 주제에.
퍼지 분석

4
@fuzzyanalysis Fair는이 답변을 단순히 틀린 것이 아니라 불완전하다고 부를 것입니다. 모든 방문자가 Java를 JS로 컴파일하는 방법을 알거나 GWT가 존재한다는 것을 알기를 기대할 수 없기 때문에 GWT에 대한 포인터 또는 이상적으로는 GWT에서 작동하는 작업 예제를 기대할 수 있습니다. 모험.
Chris Moschini
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.