In December, I said that 2010 could be the year of AJAX and REST services. I wrote at some length about my own journey, which generated quite a bit of discussion, so I thought I would follow up that post by going into more detail about how I tie AJAX to the cloud.
First, I'd like to elaborate on the issue of "the cloud" vs. "the server." From an application development perspective, it doesn't matter where a given service resides. It could be running on the same machine, the same LAN, the same WAN, or somewhere on the Internet. It could be running on a shared server, a virtual private server, a dedicated server, a server farm, a cluster of servers, a grid of servers, or a cloud of servers.
[ See our special report on rich Web development tools, including reviews of Microsoft Silverlight, Curl, WaveMaker Visual Ajax Studio, JackBe Presto, Nexaweb Enterprise, Backbase, Bindows, Tibco General Interface, and more open source AJAX toolkits than you can shake a div at. | Keep up with app dev issues and trends with InfoWorld's Fatal Exception and Strategic Developer blogs. ]
What matters from a programming standpoint is how you call the service, how you parse the responses, and how you deal with error conditions. What matters from a production standpoint is how responsive, reliable, and scalable the service is, day in and day out.
I divide services into three general categories: XML Web services, RESTful services, and other services. The "other" category includes all sorts of important protocols, such as EDI, HL7, and various binary protocols. Within XML Web services, I include XBRL, which has an extra layer or five to support accounting standards. I've written about all of these over the years.
I've found it easier to code against RESTful services than any of the others, except for special cases, such as that of the Microsoft .Net Framework, which has very strong support for XML Web services at the language and class library levels; at the WCF level for WS-* services (another layer on top of XML); and at both class library and WCF levels for a fast but proprietary binary protocol.