- From: <paul.downey@bt.com>
- Date: Thu, 31 Mar 2005 17:14:09 +0100
- To: <www-ws-desc@w3.org>
Below is a first attempt at text for primer section 5.5 "Versioning and Service Equivalency". I found this difficult to write in two major respects: - i felt ill at ease with the term "Service Equivalency", especially when the previous section is about "Multiple Logical WSDL Documents Describing the Same Service" which i feel could also be applied to versioning. - the current openness of debate on this subject combined with the lack of formal materials to reference, hence a rather wishy-washy set of moving target references (apart from Webarch that is). Paul A WSDL document describes a set of messages which a Web service may send and receive. However it is possible for a Web service to exchange other messages beyond those described in a given WSDL document. Often this circumstance occurs following an evolution to the service. How best to manage the evolution (versioning) of Web based systems is at the time of writing the subject of a wide ranging debate. However, there are three activities within the W3C which are directly relevant to versioning of Web services description: *) The Technical Architecture Group (TAG) have published guidance on the extensibility and versioning of data formats in [Web Architecture] document. There is also a more wide ranging draft finding on Versioning and Extensibility [TAG Finding: Versioning]. Both these works build upon the technical note [Web Architecture: Extensible Languages]. *) The XML Schema Working Group are collecting a series of Use-Cases for Schema versioning as a part of the Schema 1.1 activity [XML Schema Versioning Use-Cases]. *) The Semantic Web Best Practices and Deployments Working Group are examining how vocabularies, may evolve [SW VocabManagementNote]. Whilst as yet incomplete, these activities all agree in one important respect, that versioning is difficult, however that you SHOULD anticipate and plan for change. The draft finding on Versioning and Extensibility details two key approaches to versioning: *) comaptible evolution *) big bang _Compatible_Evolution_ In compatible evolution, designers are expected to limit changes to those that are either backwards or forwards compatible, or both: -Backwards compatibility is where a receiver is expected to behave correctly should it receives a message in an "older" version of a language and thereby enabling newer versions of a service to continue to work with older consumers of a service and vice versa. -Forwards compatibility is where a receiver is expected to behave properly should it receive a message in a the "newer" version of a language. Forwards compatibility enables existing consumers of a service to continue working with a newer version of the service and vice versa. There are three critical areas in which a service described in WSDL my evolve: *) the service now also supports additional binding. In compatible evolution, this should be safe addition given that adding a new binding shouldn't impact any existing interactions using another transport. *) an interface supports new operations. Again, in compatible evolution this is usually safe, given adding an additional operation to an abstract interface shouldn't impact any existing interactions. *) the messages exchanged may include additional fields How the messages themselves may change within a description depends to a large extent upon the type system being used to describe the message contents. RelaxNG has good support for describing vocabularies which ignore unknown XML as does OWL/RDF. XML Schema 1.0 has limited support for extending the description of a message via the xs:any and xs:anyAttribute constructs. XML Schema 1.1 has been chartered to provide "changes necessary to provide better support for versioning of schemas", and it is anticipated that this will include improved support for more "open content" and therefore better support for compatible evolution of messages. *_Big_Bang_ The big-bang approach to change is in many respects the simplest to currently represent in WSDL 2.0. Here any change to an WSDL document implies a change to the document namespace, a change to the interface implies a new interface namespace and a change to the message contents is communicated using a new message namespace. This approach has particular benefits where an agent may quickly tell if a service has changed by simply comparing the namespace value. It is feasible to combine the both approaches in a variety of different ways, for example changing the namespace for minor changes to message descriptions, but not changing the interface namespace when adding new operations: 'CheckAvailability1', 'CheckAvailability2', etc. Whilst the Big Bang approach is approach currently most easily implemented using WSDL 2.0, it can lead to a large number of cloned interfaces which become difficult to manage, making the compatible approach preferable to many for widely distributed systems, but in the end, the choice of a versioning strategy for Web services described in WSDL 2.0 is left as an exercise to the reader. [TAG Finding: Versioning] Versioning XML Languages, David Orchard, Norman Walsh. Proposed TAG Finding 16 November 2003. Available at http://www.w3.org/2001/tag/doc/versioning-20031116 [WebArch: Extensible Languages] Web Architecture: Extensible Languages, Tim Berners-Lee. W3C Note 10 Feb 1998. Available at http://www.w3.org/TR/NOTE-webarch-extlang [XML Schema: Versioning Use-Cases] XML Schema Versioning Use Cases, Hoylen Sue. W3C XML Schema Working Group Draft, 29 March 2005. Available at http://www.w3.org/XML/2005/xsd-versioning-use-cases/ [SW VocabManagementNote] Vocabulary Management, Thomas Baker, et al. Semantic Web Best Practices and Deployment Working Group Note 8 Feb 2005. Available at http://esw.w3.org/topic/VocabManagementNote
Received on Thursday, 31 March 2005 16:23:42 UTC