2016-08-09 3 views
0

私はイベント送信に使用されるアプリケーションを書いています。現状のままでアプリケーションは完了しますが、将来はアプリケーションに追加されます。これらの追加は新しいバージョンになります。私の質問は、実際にそれらのバージョンを実装する方法です。確かに "if version == xx"に行くことができますが、コンストラクタのあらゆるメソッドでこれを行うということは、正確な解決策ではないようです。そのため、これらのバージョンを実装した経験のある人たちの助けを求めています。ありがとう!私のコードでプロトコルバージョンを実装する

+0

を取得する(https://developers.google.com/protocol-buffers/)?優れた下位互換性でプロトコルを拡張することができます。 – waltersu

答えて

1

あなたが直面している問題は、forward compatibilityを実装することで処理できます。残念ながら、あなたの議定書について何も知らなくても、私はあなたに実用的な助言を与えることはできません。しかし、あなたが従うことができるいくつかの一般的な手順があります:

  • 実際に行う必要がある場合のみ、プロトコルを変更してください。
  • 下位互換性を損なわないようにしてください。
  • プロトコルの更新時にユーザーにアプリケーションの更新を強制します。これにより、一度に有効なバージョンが1つだけ存在することが保証されます。
  • 複数のバージョンのプロトコルをサポートする必要がある場合は、何らかの種類のコンバータを実装することができます。しかし、これはすべての場合に機能しないかもしれません。
+0

ありがとうございます。ポイント: 1)はい、それは私がする必要がある場合のみ変更されます。 2)下位互換性は決して壊れません。 3)ユーザーに強制的にアプリケーションを更新させることは、残念ながら不可能です。 4)私はコンバータを調べます。 – nxn

0

私は、インタフェースと工場パターンでこの問題を扱います。例えば

  • すべてのメソッドとのインタフェースを作成します。
  • バージョンごとに異なる実装を作成します。
  • 使っ工場[プロトコルバッファ]を使用しないのはなぜ適切な実装
関連する問題