Randy
Charles Morin: The above is an example of a REST
application. It’s easy and works reliably for at least a few
hours.
This week, I had my car serviced. The air conditioner
wasn’t working, and let me tell you that air conditioning is
important during the summer in North Carolina. Fixing it
wasn’t cheap.
Of course, I could have chosen to replace my car with one that
breaks down less often. Generally such cars cost even more to
repair.
There is a large market for reasonably priced cars, particularly
ones that can be readily serviced.
Imagine if your car used Web services that required an upgrade every time Yahoo! changed their layout engine. That car would have to be reasonably priced and I’m sure lots of people would buy it too. In fact, I know a lot of people would buy it. They already do ;)
Mind you, if I were the manufacturer and I had a maintenance contract, then I’d be happy.
You know, there are few things more frustrating than to be on the phone with an important client, about ready to clinch the deal, just to have the connection drop.
I hear that there are these things call land lines which actually involve cords. Cords require more up front planning, and tend to anchor the phone to a single location, but do make connections more reliable.
I imagine that more and more people who actually care about making calls (after all, what else do you use cell phones for?) will drop their cell phone contracts and turn instead to these land lines.
This week, I had a Web Services experience. I was tasked with integrating with some 3rd Party vendor’s SOAP API for adding people mailing lists. List manager software. Ooooh, fun.
After downloading 100 MB of libraries and generating 36 classes from their WSDL file, I got it going pretty quickly, and everything was strongly typed and Just Worked. Then, the problems started happening. Axis started grumbling about MalformedURLExceptions. Hmmm. Where in my 36 classes and 100 MB of library code was this occuring? I had only written 10 or 20 lines of code so far.
Well, eventually I had to get out Ethereal and watch it. Turned out the vendor’s server was intermittantly redirecting my requests, but sending a relative URL in the location header, which made Axis choke. But, at least I could see where they were trying to redirect me to. Ah, it was an HTML page telling me I didn’t have access to some list I didn’t try to manipulate. That’s right, every single list on the machine has the same URI, and authentication failures are handled with redirects. So, the server intermittantly accusing me of ACL violations, while all of my requests were identical.
I dutifully sent the Ethereal dumps to their engineer, told my boss about the problem, and wondered how long it would have taken using Python and an XHTML microformat.
Randy, I’m not saying I should have used a web site intended for browser traffic. But if the data had been XHTML or RSS or Atom or something exposed at distinct URIs over HTTP, it would have taken a lot less time. Note that all of my problems stemmed from SOAP’s use of HTTP as a transport, rather than an application protocol. Proper use of HTTP would have avoided several bugs in the server’s SOAP application code, and had fewer dependencies.
Something I ran into last week for the first time, selected for no other reason other than I think it’s representative (and it looks like a good project in terms of what it does - not meant as a witch hunt);
It’s hot here in Italy in July too. Like many people in this part of the world we rely on an unsophisticated, inexpensive but relatively reliable form of air conditioning known locally as “finestre”.
A comparable RESTful application might be doing a GET on “http://www.kbcafe.com/juice/?guid=20050722142018”