Типичный способ управления версиями веб-службы заключается в том, чтобы клиенты указывали желаемую версию. Вы можете учесть простые ограничения, такие как «> 2.0», «<1.5» или «= 1.1». Естественно, вы хотите минимизировать количество поддерживаемых версий для вашего собственного здравомыслия. Если клиент не указывает версию, вы принимаете самую последнюю версию. </p>
Способы предоставления версии различаются. Некоторые отстаивают использование URL, другие поощряют заголовки, некоторые могут включать его в качестве параметра вызова API. Почти никто не изменит название метода. Это эквивалентно версии «пакета» или «пространства имен», о которой говорит ссылка OSGi. Это сделает обновление очень трудным и помешает людям обновлять больше, чем любые изменения в реальном сервисе.
Это также зависит от того, как вы получаете доступ к вашим веб-сервисам. Если вы используете REST, то поддержание чистоты URL и использование заголовков наиболее целесообразно (и было бы тривиально взломать его как параметр запроса, если это необходимо). Если вы используете SOAP / XMLRPC / what-RPC, то, как правило, помещать его в URL-адрес вполне нормально.
Изменить 5/2011 FWIW, хотя я не согласен, Блог Apigee рекомендует поместить версию в URL .
Как клиент определяет версию, обычно довольно просто. Что сложнее, так это то, как вы запускаете все версии одновременно. Большинство языков не имеют возможности загружать несколько версий одной и той же библиотеки / модуля / класса / функции в одну среду выполнения (будь то виртуальная машина, процесс или что-то еще). Предоставленная вами ссылка на OSGi является решением Java, позволяющим это сделать.
На практике OSGi будет излишним для большинства ситуаций. Обычно проще отменить прокси-запросы на другой сервер или процесс.
Тем не менее, лучший способ «версий» ваших сервисов состоит в том, чтобы встроить в них расширяемость и гибкость, чтобы они оставались совместимыми в прямом и обратном направлении. Это не означает, что все версии должны быть совместимы друг с другом, но последовательные версии должны быть совместимы друг с другом.