This talk addresses the service versioning from a quite high-level perspective. Opposing design time and runtime versioning which is to be preferred. This later propose the versioning of endpoints.
We see anti-patterns like coding the version in the schema.
Ideally, we should use rule-based contracts like Schematron instead of grammar based ones (XSD, WSDL).
In a project with the belgian federal government, a mediator (ESB or alike) was introduced to adapt old service contracts to use the new implementations.
Technique like using a client ID or service version to let the mediator to choose the actual service to call.
This must be documented in a soft document as part of the governance strategy.
There is today no standard policy for service versioning. WS-Addressing could be use for that but not completely.
The speaker proposes a WS-Versioning standard containing things like context/content based version routing, SOAP headers for version negotiation.
He deplores the fact that endpoint and schema locations are hardcoded in the contracts (WSDL, XSD). He proposes to delegate this to the mediator. It will dynamically resolve the appropriate one. We could as well pick the version using an additional parameter to endpoint WSDL URLs, e.g. ?WSDL&version=2.
>> In a project with the belgian federal government, a mediator (ESB or alike) was introduced to adapt old service contracts to use the new implementations.
ReplyDeleteThe mediator was acting as a proxy to the new one?
Yes. The mediator routes the call to the old or new implementation according to rules based either on the content (customer id or version id) or simply based on the endpoint url.
ReplyDelete