Catching up with some reading, I was looking through the SDTimes issue from January 1st (yes, I know, it is now February. Cut me some slack!). In it, Sanjiva Weerawarana, CEO of WS02, has a guest editorial column about your favorite subject and mine: REST versus SOAP.
Nothing really new, to me anyway, in that editorial, but Mr W articulates the issues well. In short, neither REST nor SOAP is the answer to every need, neither REST nor SOAP are automatic solutions. WSDL is not the greatest, but it is better than the nothing we get with REST. And so on. The bottom line, says Weerawarana, is that both REST and SOAP, properly applied, can play a role in an enterprise architecture. REST is quick and clean; SOAP is more powerful and richly elaborated. Companies should "embrace the choice" and select the best for the task.
It strikes me that the REST-v-SOAP discussion is itself pretty narrow. It's almost like having a discussion about XML versus Relational data stores that flared up years back. Of course in any enterprise of significant enough size, there will be XML as well as relational stores, and the same is true of REST and SOAP today. And furthermore, neither SOAP nor REST nor some blend of both is the answer to every communications challenge. What about legacy systems? Can someone say EDI? SAP RFC and BAPI? (alphabet soup, that). What about existing deployed middleware stacks, existing skills in development and operations?
For me the bottom line is this: Heterogeneity will prevail. SOAP and REST are just more tools in the toolkit. Check 'em out and see if they work for you. We, Microsoft, think there are good opportunities in those protocols, to generalize communications and make it simpler. But they are not one-size-fits-all approaches.
By the way, a message from our sponsor: WCF does both REST and SOAP nicely. I wrote on this before. If you're building applications that communicate, Windows Communication Foundation, part of the .NET Framework, can make it easier, whether you choose REST, or SOAP, or something else, or some blend. WCF is a good choice even if you want to defer your choice, if you don't want to choose just yet. And with the tooling support for WCF added in Visual Studio 2008, WCF programming is even easier. Definitely worth checking out!