Tim Bray has written some good food for thought in his post WS-Gartner where criticizes some of the party-line praise of WS-* technologies as the future of building services on the Web and calls for vendors to provide better tooling and developer support around simple XML/HTTP/REST technologies.

Don Box has written two good responses from the perspective of a Microsoft employee. The first Going Down to the Crossroads outlines the various ways Microsoft supports working with XML, HTTP and REST. One thing I particularly like about Don's post is the following excerpt

To get a more accurate picture of what we've done so far, I'll break this category in two: Lo-Rest, which is the use of HTTP GET (or equiv) for information retrieval/query, and Hi-Rest, which is characterized by the use of HTTP PUT and DELETE (or equiv) for doing update.

I like the distinction between Lo-Rest which I've also seen people call Plain Old XML over HTTP (POX/HTTP) and Hi-Rest which is actually rare in practice with notable examples being WebDAV and the Atom Publishing Protocol. Don isn't the first person I've seen make this distinction using this terminology. Nelson Minar of Google was the first person I've heard make the distinction between Hi-Rest and Lo-Rest In his talk Building a New web Service at Google at last year's O'Reilly Emerging Technology Conference.

Don's second post in response to Tim Bray is entitled HTTP, XML, REST and $100 and he uses what has become a common tactic by Microsoft bloggers to get prioritizations of feature requests from our users. He asks how Microsoft should better support building RESTful web services including better support for HTTP and XML. Specifically he wrote

You have $100 engineering dollars to spend. No matter how many millions we'd actually wind up spending, we use $100 as an easy number for people to keep in their heads.

There are well over $100 dollars worth of features you want.

The challenge is in determining how to spread the $100 in a way that produces with the most aggregate value.

So how would you allocate resources?  Here's my  first stab with not a lot of deep thinking [after all, I'm still in Las Vegas] ;)

  • $40 - better support for consuming XML in the browser. Specifically Microsoft should follow the lead of Mozilla and implement E4X in the browser.
  • $30 - first class support for building RESTful (i.e. HTTP-centric) web services in Windows Communication Foundation [formerly Indigo]. It should be just as easy for a developer to build a service that exposes SOAP/WSDL as it should be to build one that exposes PlainOldXML, supports the core HTTP methods and some of the more esoteric but useful aspects of HTTP such as content negotiation which no one really supports well today. My ideal scenario is that it should be brain dead easy for me to build a WebDAV server on top of WCF/Indigo. Of course, I assume that supports for multiple serializations beyond XML such as JSON or binary formats is also a given.
  • $20 - add the functionality in XLinq to C# as well as VB.NET. I think it would be really dumb that in the next version of Visual Studio I'm going to have to switch languages to VB.NET if I want to use a programming language that has integrated support for XML.
  • $10 - add support for some non-W3C XML technologies in Microsoft's core XML stacks (i.e. MSXML and System.Xml). I'd love to see native support for RELAX NG or Schematron in Microsoft tools.

I'd write more but my girlfriend is giving me that look that says I've already spent too much time in front of the computer. :)


Sunday, March 19, 2006 5:31:32 PM (GMT Standard Time, UTC+00:00)
Considering that MS was on the E4X comittee and xlinq in vb.net is essentialy E4x, I was hoping to have it in IE7. Thanks for bringing this up. Next release guys! And xlinq in c#..yes! If c# is where language innovation is happening, why isn't it there? One other addition would be an easier streaming api as a sax alternative. Perhaps the usually xml averse pythonistas have the answer in iterparse from the elementtree api which will be in the next version of python.


Jim Hugunin and the Iron Python team could lead the way.
Dan Sickles
Monday, March 20, 2006 3:22:27 AM (GMT Standard Time, UTC+00:00)
So Dare, how much of that $30 is for Lo-Rest vs. HiRest?

Monday, March 20, 2006 4:17:44 AM (GMT Standard Time, UTC+00:00)
One can so easily write Lo-REST services using IHttpHandler (server) and HttpWebRequest (client)?
Monday, March 20, 2006 3:14:06 PM (GMT Standard Time, UTC+00:00)
I'll try and break it down further. I'd spend at least $20 on supporting everything that would be needed to build an RSS feed or AJAX service with WCF. So that would include

- good support for manipulating HTTP headers (e.g. ETags, Last-Modified)
- good support for HTTP friendly authentication mechanisms (Digest Auth, SSL)
- good support for non-XML formats (e.g. JSON, binary)
- good support for dispatching based on the path of the URL invoked [or some subset of the path]
- good support for HTTP friendly caching
- good support for HTTP content negotiation [so I can serve Atom to some clients and RSS to others]
- good support for HTTP status codes

Some of this stuff is already in ASP.NET today but isn't packaged in as user friendly a manner as WCF does for SOAP.

Then the other $10 would be for supporting Hi-REST

- good support for dispatching based on method
- good support for defining new HTTP methods

This list isn't conclusive but it's a start. ;)
Monday, March 20, 2006 7:59:08 PM (GMT Standard Time, UTC+00:00)
$100 on a guide that explains how to build a rest-full service.

Still to this day, if you ask for information about REST, you are directed to a PHD dissertation on "Representational State Transfer".

Sorry, that doesn't cut it.
Tuesday, March 21, 2006 4:02:33 PM (GMT Standard Time, UTC+00:00)
Re: "... add the functionality in XLinq to C# as well as VB.NET. I think it would be really dumb that in the next version of Visual Studio I'm going to have to switch languages to VB.NET if I want to use a programming language that has integrated support for XML."

It's my understanding that the current CTP enables C# 3.0 XLinq extensions other than those for XML literals and late binding of axis members. (See http://oakleafblog.blogspot.com/2006/01/visual-basic-team-releases-january.html, http://oakleafblog.blogspot.com/2006/03/changes-on-way-for-vb-90-and-xlinq.html, and http://oakleafblog.blogspot.com/2006/03/anomalies-and-issues-with-vb-9-dlinq.html.)

Erik Meijer has selected VB 2005 as his "language of choice." (http://oakleafblog.blogspot.com/2005/09/erik-meijer-selects-vb-as-his-language.html) Why not follow his lead?

Comments are closed.