I generally find it very tedious to work with web services using soap. Arbitrary variable types, complicated error reporting etc. You can fall into all kinds of problems with different standards etc...
It's fine when you're a little experienced with SOAP (which I unfortunately am), but I don't think it's a format for the future.
string DoStuff(string request)
Where the request and the result are already XML documents!
SOAP has taught me to fear any technology that starts with "Simple" - it won't be.
Rest was awesome when it was the alternative to SOAP, but now there are alternatives to both that are significantly better. My protocol of preference is JSON-RPC 2.0. Simple, fast, compatible, handles batching, fairly human readable but also quite compact.
You end up with unnatural APIs in the 'REST' api.
Don't get caught up in the details of 'rest', focus on developing the API for your users -- think about what Calls they need to make, make it simple, document it!, give examples, keep the output formats sane (xml and json are done easily now days), and you'll be miles ahead of most web services.
SOAP is too strongly typed for most startups. Most likely you will be changing your API quite a bit over next few years and with REST for each new version of your API you have option of
1. Create new entry point (new URL)
2. Specify version in the HTTP headers
3. Expand request/response spec with new elements
Because most SOAP libraries implement very strong binding to WSDL schema you will be forced to create new entry point for every version of your service. FedEx learning this hard way right now. They moved their API from REST to SOAP and they have no clue how to update it now without breaking all the developers.
REST is much better with simplicity, much acceptable by developers and much more popular in tech-startups.
But there is an XML-RPC too, great solution but not spread as is has to be, like REST.
SOAP is too complicated for simple services and from everything I've seen REST only defines the URL layout while the format of the data is up to you. So you end up sending some XML-RPC like thing over the transport.
Then there are issues like GET requests getting arbitrarily limited in size, character encodings, and stuff that makes it not even worth trying to do function calls (even idempotent ones) with anything but POST.
I wish it were otherwise.
The more complex and potentially fragile the in- and output of your service is, the more attractive XML becomes, since XML can be independently validated. If you have no such needs, REST will do just fine for almost anything.
So much easier to explain and consume.
Plus, a modern framework like Rails essentially bakes the REST API in for you. Some of my apps are now really consumers and coordinators of Ajaxified JSON requests backed onto Rails.
I've written programs and frameworks that handled both SOAP and REST before, and no, you can't have them, because SOAP needs to die.