Версия контракта сообщения WCF - PullRequest
1 голос
/ 26 сентября 2011

Я хотел бы добавить новый MessageBodyMember к моему MessageContract , который ссылается на новый Datacontract .

Будет ли проблема?.

Каков наилучший способ обработки изменений в контракте сообщений?.

Как узнать, будет ли добавление нового MessageBodyMemberРазрывное или неразрывное изменение?.

1 Ответ

4 голосов
/ 26 сентября 2011

Управление версиями контракта сообщений выполняется в http://msdn.microsoft.com/en-us/library/ms730255.aspx:

Иногда вам может потребоваться изменить контракты сообщений.Например, новая версия вашего приложения может добавить дополнительный заголовок к сообщению.Затем при отправке из новой версии в старую система должна иметь дело с дополнительным заголовком, а также с отсутствующим заголовком при переходе в другом направлении.

Для заголовков управления версиями действуют следующие правила:

  • WCF не возражает против отсутствующих заголовков - соответствующие элементы остаются с их значениями по умолчанию.

  • WCF также игнорирует неожиданные дополнительные заголовки.Единственное исключение из этого правила, если дополнительный заголовок имеет атрибут MustUnderstand, установленный в true во входящем сообщении SOAP, - в этом случае возникает исключение, потому что заголовок, который должен быть понят, не может быть обработан.

Тела сообщений имеют схожие правила управления версиями - пропущенные и дополнительные части тела сообщения игнорируются.

Это означает, что вы можете добавлять и удалять MessageBodyMembers без прерываниясовместимость.Будьте осторожны с изменением типов членов.Убедитесь, что они сериализованы одинаково, чтобы оставаться совместимым

...