Don gave a very interesting presentation today at the Pnp Summit in Redmond. He attempted to open up a dialogue with the attendees on the subject of versioning of web service interfaces.
To paraphrase his position, he feels that we have spent too long trying to work out the versioning problem and with little success. He is suggesting that we should stop trying get interface contracts to do anything more than the absolute minimum, and let a secondary process do the rest.
Don suggests that the minimum requirements for an interface is a set of optional parameters that the web service could accept. The secondary process would ensure that the parameters passed actually make sense to the web service.
My first reaction was not very positive. I don't like the idea of having my "contract" spread out in different places. However, the more I thought about it, the more I realize that it is a very pragmatic solution. WSDL is just not capable of declaratively describing all of my validation constraints, so, like it or not, my "contract" is going to exist in multiple places.
The benefit (from what I understand) of using the "loose" interface description is that the versioning problem is far less significant. In theory the only time you would need to change a version is if you remove a parameter, or if you completely change a type.
I was a little concerned by Don's suggestion that in some scenario's you might embed some kind of secondary version within the message body to handle cases where customer's refuse to move to a new version. Maybe I misunderstood what he was saying.
All in all it was an excellent presentation that was extremely thought provoking, if only it had been three times longer with a quarter of the people, we could have had a much more interactive discussion!