Как правило, для непрерывных изменений (в основном, добавления методов) вы можете продлить контракт на обслуживание / реализацию в одной и той же конечной точке.Опять же, когда я говорю о неразрывных изменениях, это означает как синтаксические, так и семантические изменения.
В противном случае, самый простой способ сделать это - разместить новую версию сервиса в другой конечной точке.Дайте своим клиентам возможность перейти на новую версию постепенно, прежде чем закрыть старую версию (при необходимости).Много раз вы можете использовать большую часть своей реализации сервиса за кулисами и сократить усилия.
Кроме того, иногда изменения службы происходят не в методах, а во входных / выходных данных.Они могут быть решены несколько раз путем создания версий ваших структур данных.Например, функция, принимающая ввод XML, может начать поддерживать дополнительные данные / теги при вводе.В этом случае вы можете разместить его в той же конечной точке, а затем выяснить, какие данные отправляет клиент.Хотя я бы предпочел иметь другой метод или новую конечную точку в таком случае.
Наконец, у вас также может быть метод в интерфейсе службы, который может выдавать информацию о версии или проверять информацию о версии, предоставленную клиентом, чтобы сообщить ему, совместима ли реализация службы с каким-либо контрактом на обслуживание, с которым она заключила.Это позволяет клиентам давать дружественные сообщения в случае несовместимости или неправильной конфигурации.Еще одним вариантом в таком сценарии может быть возвращение клиенту адреса конечной точки версии совместимого сервиса (своего рода динамическое обнаружение совместимого сервиса).