SOAP considered canonical

This article by Steve Maine argues that SOAP may be used as a canonical form for all varieties of messaging between participants in a distributed system, because they are all isomorphic to each other anyway:

For example, RPC and Messaging have already been shown to be isomorphic models of the same thing. There are similar dualities between "messages sent to a stateful service" and "methods called on a stateful object". All of these ideas are just attempts to build a conceptual model around the interactions between distributed systems. Unfortunately, each of these thought-models carries with it a certain amount of implicit semantic baggage, and that fact has really hampered the development of scalable, widely interoperable distributed systems to date.

I'm not sure if it's a rat I smell, or just my own inherent dislike of SOAP.

Dear Sir, I tried your distributed messaging protocol three years ago, and since then I have used no other...

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

Practical aspects

Methinks there isn't much deep here. Sending a message and getting a response is the same no matter what acronym you dress it up with. The real difference is practical aspects -- REST APIs tend to be easy to use, while SOAP is a PITA.

""Postmodern Relativism""

(Dons critical theory hat)

The account of the postmodern given by J.-F. Lyotard emphasises the incommensurability of systems rather than their equivalence: the point is not that any of a set of isomorphic instances can serve as a canonical representation for all of them (so therefore it doesn't matter which you choose; so therefore you should choose the one with the biggest marketing budget behind it), but rather that there is no canonical representation that can unify incommensurable regimes (no universal metalanguage for natural languages, for instance). In both cases there is no definitive meta-instance, but in the truly postmodern case this is because there is no candidate that can fulfil the role rather than because all candidates are equally suited to it.

(Removes critical theory hat; blinks; scratches head)

It's kinda like endian-ness....

... or which side of the road you drive on.

All the different possiblities as "isomorphic" to each other, and none of the different forms/choices is likely to be demonstrably superior to any other. What matters most is that all concerned (within a given region or application) agree on which choice to be used. What matters far less is whether or not there is global agreement on such a thing.

That said... there are a few non-technical considerations which might cause the industry/discipline to migrate to one particular choice. (Or not). Marketing clout is one--I could invent an RPC protocol on the spot, but I doubt it would attract much attention. Wide availability (and avoidance of vendor lock-in) is of course another.

But... the question isn't whether SOAP, or anything else, ought to be the standard. The first question is do we need a global standard for this sorta thing. My suspicion is the answer is no.

Global standard

The first question is do we need a global standard for this sorta thing.

The argument for a standard, as I understand it, is that something is wanted to support "web services", i.e. automated interaction between disparate systems over the Internet, and that having a standard that approaches the ubiquity of HTTP could make a huge difference to the possibilities that are created in this space.

The anti-SOAP argument here revolves around the claim that SOAP is over-engineered for the requirements of the space. Most globally successful protocols have succeeded in large part because of a kind of simplicity which SOAP doesn't appear to exhibit. That's not to say that there isn't a rationale for SOAP's (relative) complexity, but the assumptions which lead to that complexity aren't shared by all applications. This supports the idea that a simpler protocol would make sense as a global standard, even if more complex protocols are sometimes layered on top of it.

(P.S. Saying that SOAP is a canonical distributed messaging system is a bit like saying that an armored Humvee is a canonical car.)

I Did It My Way

...none of the different forms/choices is likely to be demonstrably superior to any other.

There are unlikely to be any generic criteria that you could use to determine which form was superior in all cases. But in a given context, it's quite possible that one way of doing things might be better than another. The lure of local optimisations is one of the things that tend to undermine global standards.