World Wide Webber


My Books
REST in Practice: Hypermedia and Systems Architecture
Amazon:
US, UK
Developing Enterprise Web Services by Sandeep Chatterjee and Jim Webber
Amazon:
US, UK,
Also available: Korean Edition

My Bookshelf
RESTful Web Services Cookbook by Subbu Allamaraju
Programming Clojure by Stuart Halloway
RESTful Web Services by Leonard Richardson and Sam Ruby
One down, one to go...
Posted: 20 January 2005 @ 01:20 UT from Sydney, Australia

As Mark points out, the WS-A WG is making fantastic progress and by dropping refProps leaves only refParams as the last irritant in the spec.

However I disagree with Mark's implicit assertion that resources should be given addressable URIs. Web Services are about hiding resources and exposing processes which operate on those resources (if you chose to think of a process as a resource, then that's ok with me just remember I wouldn't call it that). It's the same 404 argument again - if you expose a resource, I will bind to it. If you remove that resource (which you are entitled to do) you will break me. Now I'm not saying that services don't come and go, but they typically do so with much less regularity than the resources they are composed from.

So, keeping the URI as the address of a service (not a resource) and in the absence of refProps (and soon hopefully refParams), a typical message flowing to an instance of a process fronted by a service looks pretty simple:

<soap:Envelope ...>
  <soap:Header>
    <wsa:To>soap.tcp://example.org/svc</wsa:To>
    <!-- Can have WS-Context context, or proprietary context here -->
  </soap:Header>
  <soap:Body>
    <ns:BusinessDocument>
      <!-- Or can determine process context from business document -->
    </ns:BusinessDocument>
  <soap:Body>
</soap:Envelope> 

The delivery address happily lives in the wsa:To element and gets the envelope to its intended destination. From there the context of the message can be established and it can be routed to the correct back-end process. See how much nicer it is that the recipient decides how to route the message? It means the recipient has full flexibility in maintaining and evolving their backend systems without the headache of maintaining the validity of all the resource-identifying URIs (or worse still refProp/Param containing EPRs).

Now as for protocol independence, well Mark, you know we'll never agree there :-) MEST allows for protocol independence because the application and message transfer are decoupled. Nonetheless, I am also almost in WS-HappyPlace.

Comments:
#
How are RefParams not "proprietary context"? It seems that they'd be undifferentiable from any other context-bearing headers in the SOAP message (at least, they should be undifferentiable -- I know there's an open issue on this). From a message perspective, the only thing that matters is that those headers are present in the message. The fact that they showed up in the message as a result of squirting ReferenceParams through the SOAP binding is uninteresting to me.
#
Steve, please have a look at http://lists.w3.org/Archives/Public/public-ws-addressing/2005Jan/0105.html to see an analysis of this. Coupling context data (interaction state, call it as you like) with an endpoint means that distributed interactions cannot be created. What Jim shows above is a message that could have been the result of an EPR + RefParams, indeed. But that's not what he was pointing out.
Author Name:
Email:
Author URL:
Comment:
Antispam:
Please type the following string (note that if the strings don't match, your comment will be lost... sorry!): 'XSBLL'.
 
Recent entries

Recent comments

Feeds:
RSS 2.0 Atom