2

プロトバッファで何かが欠けています。ここに、答えるのが難しいいくつかの質問があります。

  • すべてのデータを取得するには、.proto ファイルで十分ですか? サイトにあるアドレス帳の例では、データをファイルに書き込んでファイルから消費しているようです (.proto ファイル自体とは別)。proto がオブジェクト構造をシリアル化することと、メッセージをシリアル化できることは理解していますが、含まれている .proto ファイル自体の中でデータを配置して取得する場所を見つけるのに苦労しています。

  • 上記の質問に答えた場合、私の仮定は、あるチームが proto ファイルを作成して Java でデータをシリアル化し、別のチームが単にファイルを取得して Python を使用して逆シリアル化できるということです。それは正しい仮定ですか?

4

2 に答える 2

3

すべてのデータを取得するには、.proto ファイルで十分ですか?

このprotoファイルは、メッセージの構造を定義するために使用されます。各フィールドにはタグ番号が与えられます。適切なprotoファイルがあれば、データを正しく逆シリアル化できます。はい、protoファイルで十分です。

あるチームはprotoファイルを作成し、Javaでデータをシリアライズし、別のチームは単にファイルを取得してpythonを使用してデシリアライズすることができますが、それは正しい仮定ですか?

1 つのチームは、送受信されるデータを定義するために必要な構造を作成し、他のチームはその定義を使用して通信することができます。両方のチームが同じ.protoファイルを使用し、タグ番号が正しく割り当てられている限り、求めていることを問題なく実行できます。

于 2013-04-23T06:01:01.110 に答える
0

このように考えてみてください

クライアント側の Java コード
-プロト エンコーダー
- - バイト
======= ネットワーク =======
- - バイト
-プロト デコーダー
サーバー側の Java コード

ネットワークの代わりに、一方がバイトをファイルに書き込み、もう一方がファイルから読み取ることができます。どちらでも。

プロト エンコーダープロト デコーダーが仕事をするためには、入ってくるバイトの形式を理解する必要があります。ファイルprotoはその形式を記述します。

これは、ネットワーク経由で画像を送信するのと似ています: 双方がそれがpngファイルであることを知る必要があります。一方が を送信pngし、もう一方がデコードしようとするとjpg、うまくいきません。jpgvspngが画像形式を記述するのと同じように、protoファイルはデータ形式を記述します。

于 2013-04-23T06:33:55.227 に答える