Ali Pasha has a nice blog entry on “Policy and Contract-first Design” in which he depicts his reasoning for WSDL first design. I tend to agree with Ali on this one. Most of the work that I have seen so far on web services definitely goes into the contract itself and the WSDL is a part of the physical agreement between end points. I believe that WSDL is not enough but organizations usually identify other artifacts such as SLA, regulatory concerns, PKI, and other contract negotiated concerns outside of the WSDL, as well.

Udi Dahan referenced Ali's post and mentioned his disagreement regarding the definition of a contract. Here is an excerpt from Udi's post:

While in the “real world” a contract does indeed represent an agreement between two or more parties, a service's contract is a more “take-it, or leave-it” kind of deal

I disagree with Udi about the “take it, or leave-it” definition of service contracts. I think what he mentions is more about the significance of a consuming party‘s role in the service contract and not the lack of two or more party‘s participation in the contract. A WSDL is not a full contract and I am sure that many a WSDL has been created with little or no usage of the service. In order for a service to exist there must be at least one interested consumer. If the service creators do not take into account what the consumer‘s interests are in the service than the service may have a short lifespan. The consumer will find another service which meets more of their needs. So, even if the contract is somewhat simplistic in nature, there is still a contract between two or more parties.