Можно ли изменить службу WCF без регенерации и перекомпиляции клиентского прокси? - PullRequest
0 голосов
/ 01 апреля 2010

Допустим, у меня есть служба WCF, у которой есть метод, возвращающий объект Person.В одном из клиентов этой службы я могу добавить ссылку на службу в службу и начать использовать ее метод.

Теперь предположим, что класс Person изменен на сервере с добавлением нового DataMember.Другие клиенты будут использовать этот новый DataMember, но мой клиент не использует.Следовательно, этот клиент даже не должен знать, что сервис возвращает «больше», чем ему нужно.

Может ли мой клиент по-прежнему работать со службой, не обновляя ссылку на службу (что, как я понимаю, означает восстановление прокси и его компиляцию)?

1 Ответ

1 голос
/ 01 апреля 2010

Это должно быть хорошо, насколько DataContractSerializer ([обычно] используемый WCF) идет. Если я сериализую класс Person с 4 свойствами, сохраню его в файл, удаляю пару свойств из Person, перекомпилирую и десериализую объект Person из файла, все будет работать нормально. В этом случае десериализатор получает больше свойств, чем он ожидает, и они просто игнорируются.

Обратите внимание, что в приведенном выше примере используется DataContractSerializer, а не полный WCF. Вы можете столкнуться с некоторыми проблемами на стороне WSDL, если вы указали конкретный порядок; лучший способ убедиться в этом - запустить простую тестовую программу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...