« QCon London, Celtix Enterprise and AMQP | Main | SOA - its not just for Christmas »

Design for Success: Best Practices for WSDL Versioning

Consider this: if you're designing a service right now, there's a chance that you want this service to be successful, and reused in production for a long while to come. With success (and reuse) comes evolutionary change to the WSDL contract: new users will typically demand more functionality, or use your service in ways you didn't originally anticipate. You need to be able to cater for this change, allowing your contract to be improved over time without breaking existing service consumers.

I've put together some thoughts on how to support minor and major releases of WSDL contracts, where a "minor" point release of the contract maintains on-the-wire compatibility with existing service consumers. The technique involves a scheme for embedding major- and minor-version information in WSDL namespaces; the approach is described in more detail in the attached PDF paper.

Would be interested to hear if anyone out there has some improvements on the scheme, or alternatively, has a more elegant approach to the problem of WSDL versioning? In the meantime, if you're designing for success, then do think about versioning - the sooner the better.

Download PDF Paper on WSDL Versioning

TrackBack

TrackBack URL for this entry:
http://blogs.iona.com/cgi-bin/mt/mt-tb.cgi/483

Listed below are links to weblogs that reference Design for Success: Best Practices for WSDL Versioning:

» Service Versioning from The Magister's Terrace
It has always seemed to me that the weakest link in the SOA chain is how to version services and ensure that you don’t break clients/consumers when updating the WSDL interface. Up to now, I have been keeping the old service up, and creating a new... [Read More]

Comments (1)

Sergey Beryozkin:

Hi Adrian

"if you're designing for success, then do think about versioning" Big +++1

general comment is that this interesting paper concentrates on the "big-bang" style of versioning. This is valid style and apparently some vendors like it.

WSDL is the XML language and when versioning XML Vocabularies there's another style of versioning : compatible evolution.

Please have a look at this section in the WSDL2 Primer :
http://www.w3.org/TR/wsdl20-primer/#adv-versioning.

Both styles are mentioned there. The combined approach is also mentioned. Compatible evolution approach is typically preferred.
Another thing WSDL can also describe RESTful services, the only methods there are POST/GET/UPDATE/DELETE.
Versioning of such WSDLs is really about versioning the input/output XML vocabularies.

I'd personally like to see this paper evolve to describe the compatible evolution too. Describe pros and cons of both approaches. Recommend the best approach depending on the environment, etc...


Post a comment

(If you haven't left a comment here before, you may need to be approved by the site owner before your comment will appear. Until then, it won't appear on the entry. Thanks for waiting.)

About

This page contains a single entry from the blog posted on April 24, 2007 8:02 PM.

The previous post in this blog was QCon London, Celtix Enterprise and AMQP.

The next post in this blog is SOA - its not just for Christmas.

Many more can be found on the main index page or by looking through the archives.

Powered by
Movable Type 3.31