| Yes, I'm afraid you are. SOAP is out of control. You can tell how bad it is getting since it was originally named "Simple" which even back in the day was a misnomer. The fact that all mention or pretence of it being simple has gone out the window is symptom. Here's a particularly egregious example of a SOAP structure I'm familiar with but I must stress I did not design: <?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Body>
<MarkLastPhotoInRollResponse xmlns="http://localhost/api/soap/eyefilm" />
</SOAP-ENV:Body>
</SOAP-ENV:Envelope> That's what? More than a hundred bytes of data to encode what can only be described as one byte of payload? Insanity. REST has some good points to make. There's a lot of importance in not trying to impose excess state in applications that are primarily going to be used over HTTP talking to traditional web servers. However, the best thing about REST is that it doesn't say _anything_ about how the data ought to be encoded. Of course people can abuse this by using pointless and stupid formats like JSON, but hey if you don't want your application to have reasonable performance, it isn't my problem. Those of us who still have to worry about CPU cycles and RAM and the cost bandwidth realise that you can define data formats that have useful properties like streamability, that is to say you can define parsers with the semantics /Either read this structure now if you have enough data, or call me back when you do have enough so I can parse it then./ A property I consider paramount in any asynchronous application that uses the network, but is completely lacking in XML. That also gives you the option to skip structures without parsing them, which is helpful. Then there are issues like widths of integers, which people are inclined to forget about when using modern scripting languages. Of course, this all comes back to bite people when they try to use a horrid language like PHP which secretly actually has a fixed width for its integers, but neglects to tell you what it is and has no syntax that lets you choose to be signed or unsigned. sigh |