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.
