Мартин Фаулер предоставил отличную статью о версиях схемы и точках расширения . Тем не менее, поскольку у вас нет точек расширения сегодня, это не вариант для вас. Подход, широко используемый в отрасли, заключается в наличии более чем одной версии ваших WSDL и XSD в определенный момент времени. Так что если ваш веб-сервис указан с использованием четырех компонентов:
- XML-схема (xsd), описывающая вашу модель данных
- WSDL + привязка, описывающая веб-сервис с использованием XSD
- Поставщик услуг реализован на Java (сгенерированный код, например, JAX-WS)
- Реализация сервиса, "как-то" отделена от # 3
и вам необходимо внести изменения, несовместимые с предыдущими версиями, вы можете продублировать компоненты # 1 и # 2 и определить для них другое пространство имен, например, "http://www.example.org/abc_v2"
. Вы должны сгенерировать поставщика для новой версии вашего сервиса (# 3) и «каким-то образом» интегрировать его с компонентом # 4 - без вопросов, это ужасная часть.
Этот подход работает, хотя он не очень хорош, поскольку вы дублируете много кода, который нужно сохранить. Если вы следуете этому подходу, вы должны определить крайний срок для всех клиентов, все еще использующих версию 1 вашего сервиса, чтобы вы могли избавиться от дублированного кода позже.
В заключение, неплохо, но вариант.