Как вы управляете изменениями с помощью ваших веб-сервисов? - PullRequest
2 голосов
/ 14 октября 2010

Со временем ваш веб-сервис может измениться, что вы делаете и как управляете изменениями?(Различные версии; добавление дополнительных функций, изменение или даже удаление функций и т. Д.)

Ответы [ 2 ]

3 голосов
/ 14 октября 2010

Как правило, для непрерывных изменений (в основном, добавления методов) вы можете продлить контракт на обслуживание / реализацию в одной и той же конечной точке.Опять же, когда я говорю о неразрывных изменениях, это означает как синтаксические, так и семантические изменения.

В противном случае, самый простой способ сделать это - разместить новую версию сервиса в другой конечной точке.Дайте своим клиентам возможность перейти на новую версию постепенно, прежде чем закрыть старую версию (при необходимости).Много раз вы можете использовать большую часть своей реализации сервиса за кулисами и сократить усилия.

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

Наконец, у вас также может быть метод в интерфейсе службы, который может выдавать информацию о версии или проверять информацию о версии, предоставленную клиентом, чтобы сообщить ему, совместима ли реализация службы с каким-либо контрактом на обслуживание, с которым она заключила.Это позволяет клиентам давать дружественные сообщения в случае несовместимости или неправильной конфигурации.Еще одним вариантом в таком сценарии может быть возвращение клиенту адреса конечной точки версии совместимого сервиса (своего рода динамическое обнаружение совместимого сервиса).

1 голос
/ 14 октября 2010

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

Если изменение достаточно мало (например, просто новое свойство), то в идеале вы можете просто обновить выходные данные существующей конечной точки службы;Добавление новых свойств к вашим выводам и более старые клиенты игнорируют это.Проблема в том, что потребители мыла (особенно в мире .NET) используют инструменты, которые генерируют статические прокси, которые очень негибки для изменения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...