“SOAP is Dead” — if you believe the echo chamber

This is something of a followup to my post on the XML Team weblog last week, taking into consideration some of the feedback. I'm getting just a wee bit annoyed about the echo chamber repeating "SOAP is dead" to itself around the blogosphere, with nobody adding any actual evidence other than the success of various Web applications built mainly with HTTP.  There are plenty of people I know and respect, and plenty I don't know but enjoy reading their blogs, making this point.  I'll use Carlos Perez's post [someone I don't know personally] as the whipping boy, just to get back at him for "Mike Champion of course is prepared to defend the faith" 🙂 


To jump to the bottom line, I'm not defending the faith, I'm defending agnosticism. There are a range of technologies available to developers: some simple, some complex; some MS-specific, some Java-specific, some platform-neutral; some Web-based, some protocol-neutral; some tightly coupled, some loosely coupled; some favor up-front design, some are more evolutionary. The choice of one over another in a specific application is a business and engineering decision, not something to be determined by "faith-based programming" in accordance to either the SOAP or REST religion.


Carlos Perez writes:


Isn't SOAP the underpinnings of Web Services, the same technology that was billed as the silver bullet to extinguish our collective integration nightmare?


Uhh, no it's not billed that way.  I suppose someone can find Steve Ballmer speeches from 2001 that can be construed that way, but let he whose marketing people are without hyperbole light the first flame 🙂   If you really want to judge the web services technologies by checking how well they realize the coolest visions of their early advocates, then I suppose SOAP has failed... but so has Java, the Web, and just about everything else I can think of, if judged by those criteria.   


The RESTful approach has now born fruit. Applications like BlogLines, Flickr, Mappr, Del.icio.us and 43Things are revealing that proof is in the pudding


I'm not sure these are really RESTful in any meaningful way beyond using HTTP to move information around. [see Steve Maine's post and comments thread]  More importantly, it's not at all clear to me how SOAP, WSDL,  or WS-* could plausibly be central to these applications even if all the hype had  already become reality. There's no client-side software to integrate with other than the browser, and the overwhelmingly obvious way to integrate browser-based applications with services is HTTP.   Furthermore, there's no underlying reliable messaging, transaction processing, end-to-end encryption, etc. etc. technology in a typical user's internet environment that the SOAP headers can trigger. (Remember that all the WS-* specs do is describe a standard way to request such services).  Maybe in some future world where Indigo and Avalon are pervasive in the Windows world and XUL and some open source SOAP, etc.  toolkit are pervasive in the Mac / Linux / Java worlds, one could imagine building this kind of consumer oriented service using WS-*.  Until then,  the web services technologies don't have much potential to address the challenges faced by a designer of such a service, so seems a bit pointless to note that they aren't used for these applications in practice. 


The web services technologies have a place, or at least a great potential, that should not be minimized. People who think that the Web is where almost all the action is might want to spend a little time in the enterprise software world.  The dominant vendors there, such as IBM and SAP on the back end, and BEA in the middle, have joined with MS in the web services initiatives because they have determined that the raw XML and HTTP technologies do not do the job by themselves.   I honestly don't have a lot of first hand knowledge of whether SOAP is really thriving today in that world, but that's where you want to take its pulse, not in the world of consumer-oriented, browser-based Web applications.  


 Carols Perez takes me to task:


What Mike seems to be saying is that REST is the Yugo and if you want the features then you have to buy a Rolls Royce. It's a sales pitch used all too commonly. Unfortunately, if I wanted a Rolls Royce I would have purchased a JMS implementation, not a Web Services implementation with a yet to be defined solution for security.


That is exactly the problem: You may have a JMS implementation, but it won't interoperate at the message level with other vendors' JMS implementations, and it won't  even be consistent at the API level with all sorts of proprietary message queuing and transaction processing systems that are deeply rooted in enterprises.  WS-* is about getting these things to interoperate, leveraging XML's inherent platform and application neutrality, and adding a couple layers to request services from the underlying messaging, security, and transaction processing systems.


Furthermore, the employees of those enterprises do a lot of their actual work with desktop applications, and these currently exchange information with the enterprise systems only with considerable expense and inefficiency.  At my previous job  , a common use case would be to get data back and forth between a legacy Natural mainframe application  and an Excel spreadsheet or other MS Office application.  Web services technologies let developers do this kind of thing by running a Natural -> WSDL translation wizard and leveraging the SOAP support built into both Office and various vendors' enterprise middleware.  Is this RPC-oriented rather than document-oriented? Tightly coupled?  Doing what CORBA tried to do, only with XML underneath?  Perhaps, but you'll have to explain to the people whose actual jobs today are made easier by web services why this is a Bad Thing. 





With that little rant out of my system, I'd like to point to reponse by Bill de Hora 

that I found very thought provoking.  I didn't see much that I disagreed with.  He confirms my understanding that REST developers don't really want those VisualStudio wizards that MS doesn't offer 🙂


My impression of those who are interested in using REST is that they want to be close to wire and to the data and if anything, want to reduce the number of tools in use. REST is a minimalist approach to systems building - when you're using it you're making a decision to some of the heavy lifting on your own



Similarly, I agree (and AFAIK the Indigo people do as well)


there's not much question that WS-* is in need of rationalizing. Entirely natural in the tech sector, competitive pressures have resulted in duplicated effort and excess choice for technology decision makers, which lessens the value of having standards to begin with.


I'm not so sure about

WS can be positioned primarily for those companies whose requirements are effectively off the bell curve


He may be seeing a different bell curve than I do.  If we are talking about consumer applications over the web, sure.  If we are talking about enterprise scale integration efforts in a world where technologies such as SAP and other ERP systems are pervasive, proprietary message queuing systems are the transport mechanism of choice, COBOL and other mainframe-rooted development languages are remain very important, and millions of terabytes of operational data remain in IMS (a dinosaur-era hierarchical DBMS), then I simply have to disagree.  One lesson I learned in my previous job  is that while this stuff has little geek mindshare anymore, it is pervasive and persistent in big business.  I don't expect a RESTifarian story for mainframe modernization anytime soon!


The bulk of the post is an intriguing discussion of simple technologies and disruptive innovations, drawing heavily on THE INNOVATORS DILEMMA.  I agree with Bill's point that while WS is generally marketed as if it were a disruptive technology, it is not really. (Well, OK, maybe it disrupts the moribund EAI industry ....) 


Bill's analysis helped me clarify my pushback against all the "SOAP is comatose, put it out of its misery" posts: WS-* is a collection of sustaining innovations intended to incrementally extend and improve existing enterprise infrastructures and PC desktop applications. It's hard to disagree with the proposition that these will eventually be replaced by a disruptive technology that hits a very different price-performance point, and it's quite possible that XML and HTTP will be at the center of that disruption.  I'm not at all confident that "eventually" will come anytime soon, however.  Great source of ideas for entrepeneurs and experimenters, sure; proven technologies for enterprises, no.


Once again, we're talking about a world where  SOAP-based specs are being proposed as standard interfaces to existing enterprise-class technologies that have evolved slowly over decades while the internet has gone through a series of disruptive changes.  Many of us jumped on the chance to play with Bloglines, Flickr, and other disruptive applications that are presented as poster children for REST. I doubt if any of us wants our bank or insurance company to risk disruption (in the usual sense of the word)  of its business in the name of disruptive innovation.   As Bill mentions, CIOs in these industries have been burned so often by unsuccessful projects -- often planned on overly optimistic predictions about the technology fads of yesteryear -- that they are not likely to jump on XML, REST, or agile methods just because they are hot this year (or this decade).   IT departments in big organizations which spend a lot of energy fighting spammers and phishing attacks  can be forgiven for not wanting to jump on the Next Big Thing that internet technologies such as HTTP and XML offer. They'll migrate when they see their competition getting ahead of them by adopting mature and proven versions of this stuff.  Until then, WS-* looks like a promising way to integrate  business systems and improve business processes without a lot of "disruption". 



I don't know Bill personally, but I do know / admire his colleague Sean McGrath, and I get the impression that their company Propylon  is one of the relative few who really know how to apply REST principles to the  industrial-strength integration challenges that WS-* was designed for.  They are as likely as anyone to create a situation where


...WS specs and tools are being commoditized by disruptive technologies. If so the natural progression for them and the software based on them is to move up the value chain. When the mass market for enterprise technology is either over-served by technology, quality or the price is too high that leaves an opportunity for disruptive technology to take hold at the bottom end of the market.


It will be very interesting to see if they or anyone else pulls this off. I wouldn't be broken hearted, personally, if plain ol' XML disrupts WS-*  --  As I said in the team blog post, if the RESTifarians are proven right, it just creates more direct demand for the WebData XML technologies, whereas if the WS people are right, more people will use our stuff via Indigo.    I am personally, and I think MS is collectively,  hedging the bet by covering both side, and working to better understand the circumstances in which one or the other will really work best. It's an extremely good bet that there are plenty of niches out there for both.  MS can and should supply both SOAP-based and Plain O' XML tools; if others want to focus on "REST", go for it.  I for one won't suggest that you drink any SOAPy Kool-Aid, although I would appreciate a bit less rhetoric about how tasty the RESTful Kool-Aid is until there are "reference customers" that use that approach instead of WS-* in a scenario that WS-* is intended to handle.


Finally, I was very glad to see James Governor's response to the various commentaries on his article, including mine. 

a. niche - my intention was never to say SOAP is dead, merely that is not a necessary condition for web service development. There is a class of applications outside the traditional requirements of high end transactional enterprise development and workflow that just don't require the reinvention of Corba-class integration.
b. the comment there isnt any demand for SOAP refers to comments from the Creative Commons.

It's clear that we're on the same page here: "its all about niches or not."





Comments (6)

  1. Kurt Cagle says:

    Hi, Michael,

    I am probably going to floor you by saying that I agree with your contention that SOAP is far from dead and that the naysayers may be way premature in saying so.

    On the other hand, I will take issue with the notion that web services (and the holy trinity of SOAP, WSDL, and UDDI) are being unfairly pilloried as having failed in their mission.

    I’ve watched this discussion from about the time that Radioland was making waves (and enemies) by using XML RPC in its application, and have almost from the start been in the REST camp with respect to it. SOAP/WSDL-based web services were originally HEAVILY marketed by Microsoft especially as being the foundation of the next generation B2B platform that would not coincidentally revolutionize consumer applications (scheduling the dentist appointment and ordering the milk, if you will). UDDI was originally conceived for B2B applications, and it wasn’t until the marketplace responded with resounding silence that public UDDI began to be repackaged as intra-business services, a place that I had argued they belonged all along.

    You can point to the number of transactions that a company like SAP does via SOAP as a resounding indication of that success, but in point of fact, the number of companies that have wholeheartedly embraced SOAP based services has remained rather embarassingly small (and the number that maintain extensive PUBLIC services can be counted on a couple of hands).

    I’ve spent the last three days debugging SOAP where I’m sending file information from a Mozilla XUL application that was, at one time, actually able to talk with .NET based web services, and spent some time actually reworking the XML generated by the Mozilla API in order to work with the discrepancies due to changes in the acceptable structures handling such services on the .NET side.

    What this has taught me is that web services interoperability works real well when both sides of the pipe are Microsoft-based, but interoperability that’s often sold with SOAP usually means interop BETWEEN disparate systems. I’ve finally fixed the discrepancies on my end and am making recommendations back to the Mozilla core team on upgrading those components, but if the twenty hours of work that I’m out is any indication, then I would also say that I could and should have opted for a RESTful solution instead.

    There are places where SOAP makes sense, and if you are willing to pay the cost of tweaking that code to gain the interoperability, then it can work. The problem lies more with the fact that every time Microsoft chooses to go it alone to "enhance" the power of their tools when dealing with web services, they also run the risk of breaking web services for everyone else, and this in turn can sour a lot of developers who would otherwise go the route of choosing MS services to use something more reliably predictable instead.

    Note: I’m as critical on most of the people at Microsoft in your position, even though I have a huge amount of respect for you personally as a developer and authority.

    — Kurt

  2. Mike Champion says:

    Kurt – Your points about real interop are very well taken. I hope you report any problems on the MS end to the appropriate people, not just to the Mozilla people to work around. I honestly believe that they are extremely serious about interop. Still, there’s no disputing that this isn’t exactly easy. As Chris Ferris notes in http://webpages.charter.net/chrisfer/2005/02/bring-out-your-de-ad.html a lot of the interop problems are intrinsic to the XML specs/tools, and not artifacts of the WS stuff or MS’s tools. How strongly would you disagree? 🙂

  3. Kurt Cagle says:

    I would actually concur fairly strongly with that assessment. The principle challenge with interoperability has always been the semantic barrier, not the syntactic one (though even getting agreement on the syntactic can prove to be an exercise in rapidly going bald, one clump of hair in the hand at a time).

    SOAP itself is of course simply an enveloping technology, and it is the underlying contents of that SOAP message that need to provide the true layer of interoperability – of course, this is also the layer that just happens to be the most nebulous and ill-defined within the specification.

    We are at EDI + 30 at this point, trying to come up with a more generalized language for exchange and discovering the same thing that the pioneers of that field discovered then – as you make an interoperability specification flexible enough to be useful, you also increase the number of permutations that can be considered legitimate and hence the complexity of the processing (and consequently chances for incompatibility). The challenge is finding that point where the specification is useful enough to get the job done but not so complex as to be a programmatic nightmare, and I personally am dubious that we have reached that point yet.

    — Kurt

  4. Stefan Tilkov's Random Stuff says:

    A long and thoughtful post by Mike Champion on the thread that won’t die ……

  5. Sorry for the title, couldn’t resist. I found this; "SOAP is Comatose But Not Officially Dead" followed…

Skip to main content