Я только что успешно внедрил систему управления версиями WF4, используя службу маршрутизации WCF. У меня была служба рабочего процесса версии 1, в которую я добавил новое действие Decision и сохранил его как службу версии 2. Итак, теперь у меня есть 2 конечные точки (с одинаковыми контрактами на обслуживание, т. Е. Все действия получения одинаковы для обеих служб) и маршрутизатор, который проверяет содержимое сообщения (строка «versionId» для объекта, который все мои приемники принимают как аргумент), чтобы решить, какую конечную точку ударить.
У меня такой вопрос, хотя это работает нормально, когда в контракт на обслуживание не вносятся никакие изменения, как мне справиться с необходимостью добавить или удалить методы из моего контракта на обслуживание и создать службу версии 3? Моя первоначальная мысль заключалась в том, что, когда я добавляю ссылку на сервис к моему клиенту, я использую конечную точку последней версии сервиса документооборота, чтобы получить последний контракт на обслуживание. Затем в файле конфигурации я изменяю конечную точку, к которой подключаюсь, к конечной точке маршрутизатора. Но это не будет работать, если v1 и v2 имеют контракт, отличный от v3. Мой прокси будет иметь методы v3 и забудет все о v1 и v2.
Есть идеи, как с этим справиться? Должен ли я создать действующий интерфейс контракта на обслуживание в своем решении рабочего процесса (вместо того, чтобы просто указывать ServiceContractName в моих действиях приема)?