Description First

Recent blog entries from Don Box and Aaron Skonnard ask the question about contract-first development for Web services.
This is not a new concept, of course. CORBA was designed around the concept of an interface language separated from its implementation. Before that, DCE included an interface language, as did COM. And even before all of that, ACMS from Digital included an interface language, as did the Structured Transaction Definition Language specification based upon it.
In Web services this idea has been somewhat controversial, since SOAP was defined before WSDL, and is often used without WSDL in practice. Also, we have the REST crowd who argues that XML over HTTP is sufficient for everything.
The big deal in all of this is transport independence. But what does that really mean? Allowing SOAP messages to flow over multiple transports? Or the ability to send the same SOAP message over multiple different transports?
I think we also have to be careful about this. It’s easy to think about the contract as simply the next evolution of ACMS, DCE, DCOM, and CORBA. But it isn’t. It’s important to consider the purpose of the contract. For Web services, the purpose is to share data over the network. Therefore the Schema is more correctly viewed as the contract, not the WSDL, although the WSDL can be (and usually is) built up from the Schema.
Meaning it’s not the signature of the program or object that’s important for the contract. It’s the definition of the data to be transported. The big idea about WSDL that makes it different from the previous interface languages is that it clearly separates the data definition from the transport definition. The same message can be sent over different transports – the same service can be available over multiple transports.
Anyone wanting to try this out can download Artix for free.
ps Can someone tell me why BizTalk doesn’t support WSDL?

3 responses to “Description First

  1. Enterprise SOA

    The biggest problem with open software is the lack of open documentation. Instead of complaining, I have decided to do my part by making an upcoming book in which I am the lead author on the topic of Enterprise Service…

  2. Design by Contract

    The term “web service contract” is sometimes used in the very narrow sense of the syntax/signature of the service call, as expressed in WSDL/XML. Design by Contract has a broader concept of contract, which explicitly includes the semantics of the servi…