tags:

views:

66

answers:

2

I mean, true true interop: from Java to .NET, from PHP to Java, etc.

I'm asking because our powers that be want us to implement public-facing API with SOAP web services, and I'm trying to make a strong point in favor of RESTful XML/JSON API.

Their reasoning is very much brainwashing-induced:

  • SOAP is a standards-based protocol (let alone one of our devs has spend last 4 days buried in XML configuration and custom security token serializers trying to somehow bend WCF client so that it would call WSE 3.0 service and it produces all sorts of obscure errors),
  • SOAP is secure (but business-wise we don't need neither encryption nor digital signatures - HTTP over SSL will be more than enough)
  • Finally, SOAP is interoperable, and this seems to be the top selling point for them (the whole point of this question)

To reiterate: is SOAP truly interoperable? Your real-world war stories will be excellent.

+3  A: 

As long as you stick to WS-I-based SOAP standards, then interop is usually pretty easy. WS-I was designed to address to initial interop problems that early SOAP implementations suffered from.

The problems tend to crop up when using pre-WS-I web services (e.g. rpc-encoded stuff), or when using the fancy security extensions that the likes of WCF makes a big deal of. Those get complex, and hard to debug when they go wrong.

skaffman
this is so true. We've had some experiences with webservices written in different languages with different security methods and we've had a lot of problems. So as long as you stick with the standards everything should be ok.
Sem Dendoncker
+1  A: 

Yes, for the most part it is, though sometimes it can be a battle. I have a number of standards based soap services and some languages/libraries seem to be easier than others.

However, all is not happy in SOAP land. One particularly naughty library (Apache Axis), by default compiles a copy of the WSDL into its stubs....which is not odd in of itself because .net does the same thing....but the problem is that it also validates the WSDL for any changes at all. And if a change is detected it throws up.

So lets say you have a create user method and you add middle initial 5 months down the road. You will break the service for all consumers using Axis...even if middle initial is NOT required and the service could care less if you sent it. So at our place, we have to send out messages to clients months in advanced of adding any optional params so they can hire their contractors again to just recompile the WSDL on release night.

ryber