Отметить устаревшие поля в контракте WCF - PullRequest
8 голосов
/ 23 марта 2011

У меня есть контракт wcf, который работает с клиентом v1.

Сейчас я работаю над сервисом v2 и хочу отметить некоторые поля как устаревшие, поэтому клиент v1 увидит и использует их, а клиент v2 их проигнорирует.Есть ли лучшие практики по этому вопросу?Существуют ли какие-либо атрибуты в WCF, которые я должен использовать?

спасибо.

Ответы [ 3 ]

13 голосов
/ 23 марта 2011

Вы можете украсить ваши старые свойства как [Obsolete], но клиент увидит их, только если они используют ссылку на DLL, а не ссылку на службу / веб-страницу (WSDL). [Obsolete] украшение не будет передано клиенту , который использует WSDL для генерации прокси.

С точки зрения управления версиями WCF, после публикации интерфейса вы не можете удалять какие-либо методы или в соответствии с условиями контракта вы действительно не должны удалять какие-либо свойства. Вы можете опубликовать новый интерфейс и создать отдельный класс DTO, если хотите, чтобы их использовали новые клиенты.

Ссылка: Устаревший атрибут .

0 голосов
/ 30 января 2017

Я согласен с @Aliostad в том, что вам не следует удалять операции из контракта на обслуживание в целом, так как это приводит к критическим изменениям, и поэтому их следует избегать в одной версии API.

Однако, если вы хотитеинформировать клиента / потребителя о некоторых запланированных изменениях или иметь любую другую необходимость добавить определенную «дополнительную» информацию к договору на эксплуатацию, вы можете взглянуть на интерфейс IWsdlExportExtension , создать собственный атрибут, который его реализует, и аннотировать конкретныеоперации.

Вы можете взглянуть на эту статью для подробного ознакомления.

0 голосов
/ 23 марта 2011

С нашей стороны мы обычно выполняем операции через пространство имен.Когда операция устарела, мы просто помещаем комментарий об устаревании в описание, которое клиент может видеть через wsdl.Мы уведомляем наших клиентов и сообщаем им об устаревших операциях и о дате истечения срока их действия.

...