2009-04-28 3 views
0

私は、GSMネットワーク上で内部的に使用される小さなプロトコルに関する技術文書を作成しています。このプロトコルは、パターンの[id1] + [byte [] data1]、[id2] + [byte [] data2]などをバイトの連続ストリームで使用します。送信プロトコルで使用されていないフィールド値

さまざまな理由(将来の拡張性と下位互換性)のために、一部のフィールドは使用されていません。このフィールドの値は、誰がプロトコルを実装するかの選択である(現時点では、デフォルト値はプロトコルを実装するために使用される言語/フレームワーク、すなわちバイト配列要素のデフォルト値から来る)。

今質問があります。使用されていないフィールドにデフォルト値を課すことは何らかの方法で有効ですか?

答えて

0

一般に、「はい」とします。既定値と塗りつぶしの値を指定すると、将来、既存の塗りつぶし値に基づいてプロトコルを変更することができます。現在どのバイトがワイヤ上にあるかに依存できない場合、将来そのバイトに構造を適用する良い方法はありません。言うまでもなく、「実装依存の値」をバイナリ仕様にリークさせることは、一般的には悪い考えです。これは、「オン・ザ・ワイヤー」構造で、8バイトのパディングとインテルで注文されたIPアドレスで終わったところです。次のように

0

利点は、フィールドが使用されているプロトコルの将来のバージョンに存在します。デフォルトの「不良」値は、レシーバが古いバージョンのプロトコルが使用されていると判断させる。

0

は、一般的には、未使用のフィールドの値を指定することをお勧めします: - 将来のある時点でで、受信機は、フィールド

にその方法を無視しなければなりません - 送信者はゼロ にフィールドを設定しなければなりませんいくつかの新しい機能のためにフィールドを使用するように選択することができます。これを行う際に、下位互換性のために行う必要があるのは、フィールドの値0を「新しいフィーチャの導入前の古い動作」と定義することだけです。

(実際には、一方の側が他方の側がその機能をサポートしているかどうか、つまり他方の側がそのフィールドの非ゼロ値を理解できるかどうかを発見することを可能にする何らかの能力アナウンスを導入する。

関連する問題