Обработка версий для клиентов при использовании WCF - PullRequest
5 голосов
/ 16 октября 2008

Настольные клиенты будут отправлять данные с помощью WCF на центральный сервер.

При изменении схемы и т. Д., Скажем, на 100 компьютерах установлена ​​старая версия клиента рабочего стола, а на остальных используется последняя сборка.

Что мне нужно сделать на стороне сервера для обработки обеих версий? Должен ли я создать 2 конечные точки в WCF или одну интеллектуальную конечную точку, которая определит версию и будет действовать соответственно?

примечание: я буду передавать информацию о версии от клиента (если требуется)

1 Ответ

4 голосов
/ 16 октября 2008

У вас есть выбор:

Во-первых, вы все равно должны создавать версии своих сервисных контрактов с их пространствами имен; например. http://idunno.org/2008/10/numpty изменится на http://idunno.org/2008/11/numpty, если сервисные операции будут иметь критические изменения.

То же с данными контрактами; однако, если все, что вы делаете с контрактом данных, является аддитивным, вы можете пометить новые поля как необязательные;

[DataMember(IsRequired="false")] 

И старые клиенты будут работать. Так что это должно указывать на то, что параметры в сервисе и параметры out также должны быть контрактами на данные; это дает вам такую ​​гибкость.

MSDN имеет больше

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