3

この質問は単純に思えますが、WSDL ドキュメント内でその定義のバージョンを設定する適切な場所が見つかりませんでした。

目的は、いつ古くなったか、将来更新するときに簡単に確認できるようにすることです。

1.0にします。将来、新しい操作を追加する場合は、1.1 に設定します。次に、誰かがバージョン 1.0 を持っている場合、操作定義が欠落していることを簡単に確認して、更新を要求できます。

4

1 に答える 1

3

最初に認識すべきことは、サービスの新しいバージョンは新しいサービスと見なすことができるということです。似てるけど違う。次に、質問は「サービスが類似している場合に重複を最小限に抑える方法」に変わります。

バージョン管理に関しては、要求/応答メッセージに使用される型のルート ノードで名前空間宣言 (例: targetNamespace="mynamespace/1.0") または<version>1.0</version>タグ (または属性) を使用できます)。version="1.0"

名前空間を使用すると、1 つの実装で 1 つのバージョンのサービスしか提供できない可能性が高くなります。バージョン 1.0-1.3 と別の 1.3+ など、特定の実装を提供する場合は、<version/>メソッド (または@version) を使用する可能性があります。その場合、名前空間は 1 つしかないためです。実装は、 の値に基づいて、処理するか拒否するかを内部的に決定できます<version/>

よりハイブリッドなサービス ランドスケープでは、メソッドを使用して、<version/>メソッドを使用するサービスにリレーするプロキシ実装を作成できますtargetNamespace。UDDI を自由に使用できる場合は、UDDI を使用することをお勧めします。

変更の下位互換性を考慮してください。あなたが示唆するように、操作を追加すると、完全に下位互換性があります。バージョン 1.0 のクライアント X があり、サーバー (現在は 1.1) に操作を追加しても、X が認識しているすべての操作がまだ使用できるため、X はサーバーを呼び出すことができます。(使用するバージョンを反映するように名前空間を変更していない<version/>場合) インターフェースの下位互換性 (の欠如) は、通常、変更されたメジャー バージョン番号 (たとえば、1.1 -> 2.0) に反映されます。名前空間で大きな変更を行い、<version/>タグで小さな変更を行うことができることに注意してください。

楽しんでください。これは興味深い作業です。

于 2013-01-15T07:39:04.670 に答える