4

IBMによるSOAPの下位互換性に関するこの記事によると、契約を破らずに出力タイプに新しいフィールドを追加することはできないと述べています。ページからの関連する切り取りは、既存のデータ型の新しいオプションのフィールドというタイトルのセクションからのものです...

オプションにする限り、既存のcomplexTypeに要素を追加できます(minOccurs = "0"属性を使用)。ただし、注意してください。オプションの要素の追加は、それを囲むcomplexTypeが新しいサービスへの入力として受信された場合にのみ、小さな変更になります。新しいサービスは、新しいフィールドを持つcomplexTypeを返すことはできません。古いクライアントが新しいフィールドを受信した場合、クライアントは新しいフィールドを認識しないため、クライアントの逆シリアル化は失敗します。

これは、WSDL1.1仕様のために2004年に作成されました。これは、WSDL 1.2仕様の現在でも当てはまりますか?新しい不明なフィールドに対して「無視」のデフォルトの動作を定義する方法はありませんか?このステートメントも実装固有のように見えますか、それとも仕様に準拠していますか?

複雑なビジネスオブジェクトを返すSOAPサービスを進化させるという問題に取り組んでいます。消費者がそれらのユースケースを見つけると、新しいフィールドが追加されます。単に新しいフィールドを追加するために、Nバージョンのサービスを維持することは避けたいと思います。

4

1 に答える 1

3

私の個人的な経験から、これはまだ当てはまります。あなたの主な関心事はバージョン管理の方法論だと思います。http://www.ibm.com/developerworks/webservices/library/ws-version/ 、またはホームWebサービスAPIバージョニングに近いものを参照してください。

于 2013-02-22T14:58:02.183 に答える