分散システムの設計では、この種の問題に直面する傾向があります。これは、メッセージの形式が XML またはその他の明確に定義された形式である Web サービス (パラメーターと戻り値の型を定義する WSDL) メッセージング システムで表示されます。クライアントとサーバーの結合を制御するという問題は、すべての場合に残ります。
ハッシュ テーブルはどうなりますか? リクエストに「NAME」と「PHONE-NUMBER」が含まれていて、「LANDLINE-NUMBER」と「CELL-NUMBER」を区別する必要があることに突然気付いたとします。ハッシュ テーブル エントリを変更して新しい値を使用するだけの場合は、サーバーも同時に変更する必要があります。この時点で、1 つのクライアントと 1 つのサーバーだけではなく、おそらく何らかの取引所またはブローカー システム、多くのチームによって実装された多くのクライアント、多くのチームによって実装された多くのサーバーを扱っているとします。それらすべてに同時に新しいメッセージ形式にアップグレードするように依頼するのは大変な作業です。
したがって、「PHONE-NUMBER」を保持し、新しいフィールドを追加するなど、追加の変更などの後方互換性のあるソリューションを探す傾向があります。サーバーは、古い形式または新しい形式のメッセージを許容するようになりました。
ディストリビューション テクノロジが異なれば、下位互換性に対する組み込みの許容度も異なります。シリアル化されたクラスを扱う場合、古いバージョンと新しいバージョンを扱うことができますか? WSDL を処理する場合、メッセージ パーサーは付加的な変更を許容しますか。
プロセスは次のとおりです。
1)。クライアントとサーバーの間に単純な関係がありますか。たとえば、両方をコーディングして制御し、リリース サイクルを自由に指示できますか。「いいえ」の場合は、柔軟性を重視し、ハッシュ テーブルまたは XML を使用します。
2)。制御できている場合でも、シリアライゼーション フレームワークがバージョニングをいかに簡単にサポートしているかを確認してください。厳密に型指定され、シリアル化されたクラス インターフェイスは、インターフェイスに変更を加えるために何が必要かを明確に把握していれば、操作が簡単になる可能性があります。