2017-10-31 4 views
0

以下はGoogle developer guide web pageの.protoファイルです。プロトコルバッファコンパイラが.protoファイルで実行され、データアクセスクラスが生成されたとします。これらのクラスは受信したメッセージを検証しますか?たとえば、「タイプ」フィールドの値がMOBILE、HOME、WORKのいずれかであることを検証しますか?メッセージに.protoファイルで指定されていないデータが含まれているとすると、クラスはこれを使用しているアプリケーションに警告しますか?Googleプロトコルバッファーメッセージは有効ですか?

message Person { 
    required string name = 1; 
    required int32 id = 2; 
    optional string email = 3; 

    enum PhoneType { 
    MOBILE = 0; 
    HOME = 1; 
    WORK = 2; 
    } 

    message PhoneNumber { 
    required string number = 1; 
    optional PhoneType type = 2 [default = HOME]; 
    } 

    repeated PhoneNumber phone = 4; 
} 

答えて

0

はい、受信したデータは、所有するオブジェクトに逆シリアル化され、未知のフィールドは無視されます。私はあなたのアプリケーションが使用しているプロトには存在しないフィールドを受け取ったときに警告はないと思うが、それは簡単にテストできるはずだ。

docs

あなたは 後方互換性を壊すことなく、あなたのメッセージ形式に新しいフィールドを追加することができます。 の解析時に古いバイナリは単に新しいフィールドを無視します。プロトコル をデータ形式として使用する通信プロトコルを使用している場合は、 が既存のコードの破損を心配することなくプロトコルを拡張できます。

関連する問題