1

新しいDatacontractを参照する新しいMessageBodyMemberMessageContractに追加したいと思います。

問題はありますか?

メッセージコントラクトの変更を処理するための最良の方法は何ですか?

新しいMessageBodyMemberの追加が重大な変更であるか、重大でない変更であるかを知る方法は?

4

1 に答える 1

4

メッセージ コントラクトのバージョン管理はhttp://msdn.microsoft.com/en-us/library/ms730255.aspxで処理されます。

場合によっては、メッセージ コントラクトの変更が必要になることがあります。たとえば、アプリケーションの新しいバージョンでは、メッセージに追加のヘッダーが追加される場合があります。次に、新しいバージョンから古いバージョンに送信するときに、システムは余分なヘッダーを処理する必要があり、逆方向に移動するときに欠落しているヘッダーも処理する必要があります。

バージョニング ヘッダーには次のルールが適用されます。

  • WCF は、欠落しているヘッダーに反対しません。対応するメンバーは既定値のままです。

  • WCF は、予期しない余分なヘッダーも無視します。このルールの 1 つの例外は、受信 SOAP メッセージで追加ヘッダーの MustUnderstand 属性が true に設定されている場合です。この場合、理解する必要があるヘッダーを処理できないため、例外がスローされます。

メッセージ本文にも同様のバージョニング ルールがあります。欠落しているメッセージ本文部分と追加のメッセージ本文部分は無視されます。

つまり、互換性を損なうことなく、MessageBodyMembers を追加および削除できます。メンバー タイプの変更には注意してください。互換性を維持するために、それらが均等にシリアル化されていることを確認してください。

于 2011-09-26T19:25:21.670 に答える