On WSDL and silos

ParaphrasingMark:Apps do not become magicallyinteroperable simply by exposing a WSDL document. True interoperability isdirectly a function of the number of clients that can understand theapplication protocol encoded in that WSDL. (Insert obligatory reference to theREST principle of constrained interfaces).

Isthere a RESTful corollary? Something like: Appsdo not become magically interoperable simply by exposing representations oftheir internal resources in a RESTful manner using HTTP as the applicationprotocol. True interoperability is directly a function of the number of clientsthat can understand the representation of a resource living behind a given URI. 

Anexample of this corollary: remember back in the wild days of HTML 1.0, when allthe browser vendors were trying to out-innovate each other by coming up with awhole bunch of crazy tags? You could build a site that was theoreticallyinteroperable (i.e. you implemented HTTP correctly), but at the end of the daythat site still looked like crap in certain browsers.

Thisis an issue that is addressed partially by using the Content-Type: headerappropriately. But even if we’re both speaking text/xml, if you send me 

<person>
   <name>Steve</name>
</person> 

whenI’m expecting 

<entitytype=”person”>
   <characteristic type=”name” value=”Steve”/>
</entity> 

I’mstill hosed. I suppose we could invent a whole bunch of app-specific contenttypes, but that just seems to punt the problem over to a different part of thestack. 

Inorder to interoperate, two parties need to agree on both the verbs they use as well as how the nouns are represented(why else would we have RDF?). Most discussions of REST and the constrainedinterface principle seem to skip over that fact.

REST:it’s not just HTTP…

#1 Mark Baker on 2.07.2006 at 6:51 AM

Yes, data is obviously critical too, but it's the exact same problem for the two competing stacks here (Web, Web services), so it's possible to evaluate the two stacks independent of it... which is what I was doing in that post.You're right that RDF is one possible answer to the data interoperability & integration story though, ala;http://www.markbaker.ca/2002/09/Blog/2002/11/17#2002-11-rdf

#2 Steve Maine on 2.07.2006 at 9:08 AM

Mark -- fair enough; just wanted to make sure I wasn't missing anything.My point is just that all too often, discussions of the constrained interface principle focus solely on verbs. It's not enough simply to agree on a constrained set of verbs; you have to constrain your data to.I guess I look at an application protocol as being {all possible verbs + all possible data formats}. You have to agree on both if you want to really interop.

#3 Mark Baker on 2.07.2006 at 12:42 PM

Absolutely, Steve, except that last paragraph.Agreeing on an application protocol gives you the agreement on the verbs.

#4 Mark Baker on 2.07.2006 at 12:44 PM

Oops.Instead of "except that last paragraph", I should have said "except the first sentence of that last paragraph".

#5 Steve Maine on 2.07.2006 at 5:08 PM

I think we generally agree...I was trying to define the concept of "application protocol" using a quasi-set-theoretic notation and mungled it.What I meant to say is that a particular application protocol must define both the set of permissable verbs as well as the set of permissable data representations. Defining only one or the other does not guarantee interoperability.

#6 Mark Baker on 2.08.2006 at 4:51 AM

As we agreed, you need both, but I don't think it's the application protocol's job to restrict the data formats, just like it's not Ethernet's job to restrict transports, nor TCP's job to restrict choice in application protocols.As long as each layer supports an unambiguous means to identify the layer above it, all is well.For example HTTP's use of the Content-Type header to describe the data format, or TCP or UDP's destination port number.The choice in data formats will naturally be restricted by the global desire for interop.

#7 Steve Maine on 2.08.2006 at 9:16 AM

So that raises an interesting vocabulary issue. If the "application protocol" constrains just the verbs, what do we call the thing that constrains the data format? You allude to the existence of a layer above the application protocol -- presumably, this would be the thing that constrains the data. What do you call that layer?

#8 Mark Baker on 2.08.2006 at 1:19 PM

I call it the "data". 8-)

#9 Levitra on 6.01.2007 at 1:47 PM

What is the most important information I should know about levitra? You can buy cheap levitra at my homepage :)