WebServices Namespaces

e9926044

Bekanntes Mitglied
Hallo,

ich war immer der Meinung, dass man die WS- Namespaces so allgemein hält, dass man diesen WS immer erweitern kann aber die NS nicht ändern muss. Z.B.:

statt:

targetNamespace="http://mein.webservice.com/meine/applikation/v1/irgendwas"

würde ich statt der Version v1 schreiben:

targetNamespace="http://mein.webservice.com/meine/applikation/irgendwas"

also v1 einfach weglassen, da ja der Client den Javacode aus den wsdl's generiert und jedesmal wenn ich einen WS mit einer anderen Version depoly, kann ich den Client neu erzeugen.
Was sagt ihr dazu?
 
N

nillehammer

Gast
Die Frage geht in eine ähnliche Richtung, wie ob man Versionsnummern in Java-Package Namen reincoden soll.
Meine Meinung ist: Major Versions ja, Minor Versions nein.

Warum Major Versions ja? Major Versions enthaltem (meist) Änderungen, die nicht abwärtskompatibel sind. D.h. die Clients müssen sowieso angepasst werden. Ein Einfügen der Major-Version in den Namespace erleichtert das gleichzeitige Betreiben zweier Major-Versions.

Warum Minor Versions nein? Minor Versions enthalten haupsächlich Bugfixes, Performanceoptimierungen etc. Sie können Erweiterungen enthalten, aber alle bereits unterstützten Aufrufe müssen auch weiter unterstützt werden, damit die bestehenden Clients weiterhin funktionieren. Es muss alos garantiert sein, dass alle Änderungen abwärtskompatibel sind. D.h. durch das Deployment einer neuen Minor Version dürfen bestehende Clients nicht beeinträchtigt werden. Dazu gehört auch, dass der Namespace sich nicht ändert.
 

e9926044

Bekanntes Mitglied
naja, das Problem ist, wenn in einem Jahr mehrere Major- Versionen herauskommen, dann kann der Client das auch mehrere Male anpassen und das ist nicht das was ich unter einer Schnittstelle verstehe.
Was meint Ihr da dazu?
lg
 
N

nillehammer

Gast
Ich habe meinen Standpunkt offensichtlich nicht gut genug erklärt.

Wenn sich die Schnittstelle für den Client nicht ändert, muss auch der Client nicht angepasst werden (ist ja klar). Es ist also ein abwärtskompatibles Update. Dieses Update drückt sich in der Erhöhung der Minor-Version aus. Diese ist nicht Bestandteil des Namespace. Aus Sicht des Clients bleibt also alles gleich.

Wenn sich die Schnittstelle für den Client ändert, muss auch der Client angepasst werden (ist auch logisch). Es ist also ein Update, dass nicht abwärtskompatibel ist. Dies drückt sich im Hochzählen der Major-Version aus. Diese ist Bestandteil des Namespace.

Jetzt verständlicher?
 

Ähnliche Java Themen

Neue Themen


Oben