For the second draft of Chapters 6 and 7, I've been writing up a section on working with SOAP. I knew that it might be complicated to explain but I had no idea that it would be so difficult to distill the subject down to clear rules of thumbs that really work. I need to give up right now on trying to figure out all the kinks — of which there are many — in consuming SOAP services from a variety of languages. I've made a lot of progress but that work has been really slow-going and extremely frustrating. More to the point, the contribution that a section on SOAP/WSDL makes towards finishing the book are insufficient to justify the immense amount of effort I have to expend on the topic.
I've come to some basic conclusions about SOAP and WSDL. A fundamental problem with tightly coupled exchange protocols such as SOAP is that there too many places where errors can be made. And when you run into problems, It's hard to even know where the error are. And the protocols are pretty complicated. Underlying complexity wouldn't matter if everything just worked. But that's the case right now, forcing people who want to consume SOAP services to dive down into the details of the protocol. It seems that it's been difficult for people to write and interpret the protocol properly. Or people in scripting community have generally thought it not worth the effort to do so. SOAP+WSDL are very fragile technology
Ideally, you wouldn't have to know much about how the underlying technology works. But the documentation of SOAP libraries is often bad. You are not told what certain parameters mean. That means you need to know about how SOAP works to make sense of the parameters. That really shouldn't have to be the case. Moreover, there is more coupling between the conceptual models of SOAP and WSDL than one would know. So much easier to get started with REST, even if REST has a lot of subtleties of its own.
Comments anyone? I'd really like to be shown where my thinking is wrong and how I can start using SOAP and WSDL with ease in PHP, Python, etc.