2006-02-18

SOA and Web Services

I've collected a folder of articles on SOA and Web Services, and this post captures those references electronically in one place so I don't have to retain the paper. I sure wish I had a good way to annotate pages I'd seen directly, and have those annotations be durable, searchable, manageable and based on back-up caches of the articles in case they go unavailable. Maybe that is a problem Google will tackle at some point...

I found these points attractive: Idempotency and having the caller specify the desired representation in the query (via the URI).

Under "Query String Extensibility", the paper says "If it needs to consume other services, it should pass all ignored parameters along" (Sounds dangerous - what if one of those sets an option on the downstream service call that makes it bypass security checks or return data in a different format?)

Also, "XML Schema provides a good framework for defining simple types, which can be used for validating query parameters." That is only so if you are doing a POST with an XML payload. If you are doing a GET, then XML has nothing to do with query parameters, since they will be expressed in the URI.

Under "Obligated Services", it says "Return a receipt immediately upon receiving a request", but then later says "... it must report an error if the service cannot process the request...". To whom would this error be returned? How? The only logical answer is to return that when later polled by the requester, but the wording of the item doesn't make that intent clear.

Under "An Implementation Architecture", it says "The architecture represented above has a pipe-and-filter style, a classical and robust architectural style used as early as 1944 by the famous physicist, Richard Feynman, to build the first atomic bomb in his computing team." First off, I'm not really sure how to parse that, especially the relation ship between the last phrase "in his computing team" and the rest of the sentence. But, aside from that, I could sure use a reference there. It sounds interesting and I've not heard it before. Possibly the entry "Genius -- Richard Feynman and modern physics, James Gleik, p. 201, Apacus 1993" in the "Further Reading" section is the one...

Bob DuCharme wrote Amazon's Web Services and XSLT, posted to XML.com on 2004-08-04. He calls out the ability to specify a format parameter, in particular where the value of the parameter can be the URL of an XSLT stylesheet to apply to the XML that Amazon.com would normally send in response to the query. Interestingly, the Amazon.com technology puts a copy of the request into its response, and if you pass in extra arguments in your request that are not part of the API, those arguments are still copied into the representation of the request that appears in the response. This can be useful if you want to pass information from your request to your XSLT stylesheet that will be processing the intermediate data from Amazon.com.

Jon Udell wrote The Beauty of REST, posted to XML.com on 2004-03-17. He talks about a bit of JavaScript that "extracts the ISBN from an Amazon (or other ISBN-bearing) URL and checks for the book's availability in your local library".

XML-RPC

An ugly but popular web services convention. See the specification here.

XPC

Back on 2001-04-12, I released a critique of XML-RPC in the form of my own answer to the problem space: XPC. XPC has the same overall RPC style as XML-RPC (rather than being document centric, as is the current trend), but accomplishes it with a much cleaner notation.

SOAP

Another ugly and baroque (some would say baroquen), yet popular web services convention. In a way, it is the EDI of the 21st century. Specifications can be found here.