Die typische Art der Versionierung eines Webdienstes besteht darin, dass Clients die gewünschte Version angeben. Sie können einfache Einschränkungen wie "> 2.0", "< 1.5" oder "= 1.1" berücksichtigen. Natürlich möchten Sie die Anzahl der unterstützten Versionen für Ihre eigene Gesundheit minimieren. Wenn ein Client keine Version angibt, nehmen Sie die letzte an.
Techniken für die Bereitstellung der Version variieren. Einige befürworten die Verwendung der URL, andere ermutigen Kopfzeilen, einige könnten sie als Parameter des API-Aufrufs enthalten. Fast keiner würde jedoch den Namen der Methode ändern. Das entspricht der Versionierung "package" oder "namespace", von der der OSGi-Link spricht. Es wird das Upgrade sehr schwierig machen und die Leute davon abhalten, mehr zu aktualisieren als Änderungen am eigentlichen Dienst.
Es hängt auch davon ab, wie Sie auf Ihre Webservices zugreifen. Wenn Sie REST verwenden, ist es am sinnvollsten, die URLs sauber zu halten und Header zu verwenden (und es wäre trivial, sie bei Bedarf als Abfrageparameter zu verwenden). Wenn Sie SOAP/XMLRPC/whatever-RPC verwenden, ist es normalerweise in Ordnung, sie in die URL zu setzen.
bearbeiten 5/2011 FWIW, obwohl ich nicht einverstanden sind, Apigee's blog recommends putting the version in the URL.
Wie der Client die Version angibt, ist normalerweise ziemlich einfach. Was komplizierter ist, ist, wie Sie alle Versionen gleichzeitig ausführen. Die meisten Sprachen haben keine Möglichkeit, mehrere Versionen derselben Bibliothek/desselben Moduls/derselben Klasse/Funktion in dieselbe Laufzeitumgebung zu laden (sei es eine VM, ein Prozess oder was Sie haben). Der von Ihnen zur Verfügung gestellte OSGi-Link ist eine Java-Lösung, um dies zu ermöglichen.
In der Praxis wird OSGi für die meisten Situationen übertrieben sein. Es ist normalerweise einfacher, veraltete Anforderungen an einen anderen Server oder Prozess zu übertragen.
Der beste Weg, Ihre Dienste zu "versionieren", ist jedoch, Erweiterbarkeit und Flexibilität in ihnen zu bauen, so dass sie vorwärts und rückwärts kompatibel bleiben. Das bedeutet nicht, dass alle Versionen miteinander kompatibel sein müssen, aber aufeinander folgende Versionen sollten miteinander kompatibel sein.
Hier ist ein Link aus Gründen der Referenz: http://barelyoenough.org/blog/2008/05/versioning-rest-web-services/ –
Der Oracle-Artikel ist umgezogen. Ich denke, das ist es: http://www.oracle.com/technetwork/articles/web-services-versioning-094384.html – Paddy