Googleプロトコルバッファ:JavaScriptの例


80

JavaScriptでGoogleProtocol Buffersを使用するのは良い選択ですか、それともJSONで使用する方が良いですか?

また、JavaScriptでのプロトコルバッファの実装に関する簡単な例を誰かに教えてもらえれば素晴らしいと思います。Googleのサイトのドキュメントは不足しています。


4
このSOスレッドは主題についての詳細情報が含まれています:stackoverflow.com/questions/7074147/...を
alavrik

回答:


74

[編集] Googleのプロトコルバッファのオープンソース実装はgithubで入手できます


公式のprotobufプロジェクトは、Java、C ++、およびPythonのみをサポートします。Javascriptではありません。

プロジェクトのWikiによると、プロトコルバッファをJavascriptに移植するプロジェクトは3つあります。

Protobuf.jsは最新です。protobuf-jsは2年間更新されていないので、Protobuf.jsをお勧めします。

問題はまだ「なぜ」ですか?:特に多くの数値が転送される場合、protobufは少し小さいかもしれませんが、JSONはJSスペースでより一般的なプロトコルであり、おそらくより適切にサポートされ、他のツールに簡単に統合できます。


11
JSONがほとんどの場合により適していることは間違いありません。ただし、私の場合、メッセージの送信者は私の管理下になく、protobufメッセージにシリアル化されるため、javascriptからのメッセージを解析する必要があります。
Jan Segre 2013年

21
@Why:メッセージとサービスメソッドをプロトとして記述し、コードのスケルトンを無料で入手するからですか?クライアント/サーバー側の両方でのシリアル化と逆シリアル化。
パヴェルSzczur

13
理由:他の状況でprotobufを使用するのと同じ理由。ブラウザにWebSocketが追加されたことを忘れないでください。また、デスクトップアプリケーションはJS for Windows 8で記述でき、サーバーを含むアプリケーションはNodeで記述できます。
Sprague


5
システムのAPIにAndroidやiOSデバイスなどの他のバイナリ/ protobufクライアントがすでにある場合は、サポートするためだけに、JSONを提供するAPIの2番目のコピーを作成するよりも、JavascriptWebクライアントに既存のprotoAPIを使用する方が自然です。 Webページ。
ゼロトリックポニー

36

アップデート(2016年7月28日): リリース3.0.0が公開され、他のいくつかの機能に加えて、Javascriptや他の言語もサポートしています。

Googleは最近、JSのアルファサポートをprotobufsに追加しました:https//github.com/google/protobuf/releases/tag/v3.0.0-beta-2

使用法:

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

リリースドキュメントのスクリーンショット:

ここに画像の説明を入力してください

ここに画像の説明を入力してください


上記のコマンドを実行しているときに、「入力ファイルがありません」というエラーが発生します。
ZeeshanAjmal19年


-1

Protostuffをお試しください!

設定に少し苦労しましたが、それが私の問題だったと思います。JSONとの間でprotobuff / protostuffメッセージをシリアル化/逆シリアル化できます。私はこれを使用する初期段階ですが、これまでのところ有望に見えます。


1
奇妙な。なぜこれが却下されたのですか(私はProtostuffについて意見がありません)?
Pimin Konstantin Kefaloukos 2013年

9
@Piminは、おそらくプロトスタッフがJavaであり、質問がJavaScriptであるためですか?
MarcGravell

1
@PiminKonstantinKefaloukosの人がjavascriptで
holms 2014

2
Protostuffを使用したGWT用のJavascriptオブジェクトの構築: code.google.com/p/protostuff/wiki/GwtJsonOverlays 。完全に話題に。
ファジー分析

4
@fuzzyanalysis Fairですが、私はこの答えを単に間違っているのではなく、不完全であると呼びます。すべての訪問者がJavaをJSにコンパイルする方法を知っているとか、GWTが存在することさえ知っているとは期待できないので、少なくともGWTへのポインター、または理想的にはGWTで機能させるための実用的な例を期待するでしょう-それはかなりの可能性があるからです冒険。
Chris Moschini 2014
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.