2017-08-23 1 views
0

はのは、私が(いるProtobufのバイナリエンコーディングを使用してIE)gRPC要求として使用するために、以下のように定義されproto3メッセージを、持っているとしましょう:proto3オプションフィールドは、ワイヤの互換性を損なうことなく繰り返し設定できますか?

message MyRequest { 
    string name = 1; 
} 

私が使用する(つまり、メッセージの読者)私のサーバーを変更することができます既存のクライアント(ライター)のためのワイヤーの互換性を損なうことなく、次の定義ですか? proto2 language guide

message MyRequest { 
    repeated string names = 1; 
} 

、私は以下を参照してください。

optionalrepeatedと互換性があります。繰り返しフィールドのシリアル化されたデータが入力として与えられると、このフィールドがoptionalであることを期待するクライアントは、プリミティブ型フィールドの場合は最後の入力値を取り、メッセージタイプフィールドの場合はすべての入力要素をマージします。

ただし、proto3のマニュアルには、同等の文が含まれていません。私はこれがproto3の繰り返しフィールドのために符号化されたpackedの使用に関連していると思います。

答えて

0

はい、可能です。オプションのstringrepeated stringのバイナリエンコードが同じ要素であるため可能です。しかし、メッセージがこのように再解釈されることはすぐには分かりませんので、この変更はコードの読者にとって混乱することがあります。

関連する問題