Насколько я знаю, в соответствии со стандартом SOAP / WSDL таких вещей нет. Но существуют инструменты, чтобы справиться с такими проблемами. Например, в Glassfish вы можете указать таблицу стилей XSL для преобразования запроса / ответа веб-службы. Другие решения, такие как Oracle SOA, предлагают гораздо более сложные инструменты для управления версиями веб-службы и интеграции компонентов вместе. Сообщение может быть перенаправлено автоматически на другую версию веб-службы и / или преобразовано . Вам нужно будет проверить, что предлагает ваша целевая инфраструктура.
EDIT
XML и XSD более гибки в отношении эволюции схемы, чем типы и сериализация в объектно-ориентированных языках. Некоторые вещи можно сделать обратно совместимыми, просто объявив их как необязательные, например,
- Добавление параметров к существующим функциям - если параметр является необязательным, вы получаете значение
null
, если клиент не отправляет его
- Добавление переменных к существующей структуре, которые используются в существующих функциях - если значение является необязательным, вы получите
null
, если клиент его не предоставит
- Удаление функций - здесь нет волшебства
- Удаление параметров из существующих функций - параметры, отправленные клиентом, будут лишними в соответствии с новым определением и будут опущены
- Удаление переменных из существующей структуры, которые используются в существующих функциях - в этом случае я не знаю
- Изменение типа параметра, используемого в существующей функции - это зависит от изменения. Для простого типа сериализация / десериализация может все еще работать, например, Строка в int.
Обратите внимание, что я не уверен на 100% в списке. Но несколько тестов могут показать вам, что работает, а что нет. Дело в том, что XML отправляется по проводам, что дает некоторую гибкость.