Можно ли запустить несколько версий одного и того же веб-сервиса? - PullRequest
1 голос
/ 28 января 2010

[RUN DOWN]

  • Требуется вызвать веб-сервис с информацией о версии, встроенной в имя веб-сервиса.
    НАПРИМЕР. webserviceV1

  • Когда я генерирую прокси-класс из wsdl, имя веб-службы используется в качестве имени класса.
    Я использую инструмент wsdl.exe.

  • Я могу предвидеть, что новая версия веб-сервиса приведет к тому, что моя кодовая база будет поддерживать 2 набора прокси-классов. Или для кода, который использует существующие прокси-классы, который будет переименован.

[МОЙ ВОПРОС]

  • Я хотел бы предложить решение для провайдера, которое позволило бы им предоставлять несколько версий веб-сервиса, поскольку он находится на ранней стадии проекта.

  • Мне сообщили, что возможным решением будет предоставление веб-сервиса через разные порты. Однако, попробовав себя, я не знаю, возможно ли это даже через IIS.

  • Можно ли одновременно запустить несколько версий веб-службы на одном компьютере?

1 Ответ

3 голосов
/ 28 января 2010

Конечно, это возможно. Вместо добавления номеров версий к классам веб-сервисов поместите их в отдельные виртуальные каталоги:

http://host/services/1.0/service.asmx
http://host/services/1.3/service.asmx
http://host/services/2.0/service.asmx

Затем вам придется разработать схему управления версиями (используйте ветки должным образом; см. this для некоторых мыслей по этому поводу), чтобы поддерживать все версии службы одновременно.

Что касается кода, вы можете попытаться абстрагироваться от различий между версиями служб за общим интерфейсом (подумайте AbstractService), а затем использовать его как основу для реализаций, зависящих от версии (ServiceV1_3).

Google дает довольно хорошие результаты именно для этой темы.

...