したがって、この例は次のとおりです。
私はメッセージタイプを持っています。サーバーA->B->C間で受け渡されます。ここで、いくつかの新しいフィールド/IDを持つバージョン2.0のメッセージが作成されたとします。サーバーAとCはこの新しい形式を認識していますが、サーバーBはまだ古い形式を使用しています。すべてのサーバーは、メッセージを逆シリアル化し、検査し、シリアル化し、送信します。Aがすべてのフィールド(メッセージのV1.0とV2.0の両方)に入力していると仮定すると、CにはメッセージV2.0の入力されたフィールドが表示されますか?
私はプロトコルバッファがこれをサポートしていることを知っています。Thriftもそれをサポートしているかどうか知りたかった。(私がC#で行った簡単なテストでは、答えはノーですが、みんなに確認したかっただけです)
メッセージコードの例として、ここではIDLについて説明します。
struct Message { // V1.0
1: i64 Id;
}
。
struct Message { // V2.0
1: i64 Id;
2: string Content;
}
サーバーCは、Aに入力されたMessage.Contentを認識しますか?