Есть несколько подходов, которые вы можете использовать. Наша архитектура SOA включает в себя сообщения XML, отправляемые в службы и из них. Один из способов достижения того, что вы описываете, - это избежать использования библиотеки привязки данных к нашей XML-схеме и использовать универсальный XML-анализатор, чтобы получить только те узлы данных, которые вы хотите игнорировать, которые вам не интересны. Таким образом, сервис может добавить дополнительные новые узлы к сообщению, не нарушая никого, кто в данный момент его использует. Обычно мы делаем это только тогда, когда нам нужны только один или два фрагмента информации из более крупной структуры схемы.
В качестве альтернативы, другое (предпочтительное) решение, которое мы используем, - управление версиями. Версия сервиса придерживается определенной схемы / интерфейса. Когда схема изменяется (например, интерфейс расширяется или модифицируется), мы создаем новую версию сервиса. В любое время у нас может быть 2 или 3 версии на ходу в любое время. Со временем мы устареваем, а затем удаляем более старые версии, а затем переносим зависимый код в более новые версии. Таким образом, зависимые от службы могут продолжать использовать существующую версию службы, в то время как некоторые конкретные зависимости могут «обновиться» до новой версии. Какие версии службы вызываются, определяются в файле конфигурации для зависимого кода. Обратите внимание, что не только схема становится версионной, но и весь базовый код реализации.
Надеюсь, это поможет.