BACKGROUND:I develop custom WordPress plugins for my clients that they then distribute via the WordPress plugin repository. I'm increasingly running into clients who want my WordPress plugins to consume SOAP web services developed by their internal development teams (and as an aside, thus far every one of these SOAP web services have been developed using ASP.NET).From my experience, especially within the realm of WordPress plugin development, interacting with RESTful web services is almost always trivial, and they just work. From my admittedly third-hand knowledge of actually consuming SOAP web services via WordPress plugins, especially ones that are widely distributed to mostly non-technical WordPress users, embedding a SOAP client is fraught with peril as there are so many things that can cause a SOAP web service call to fail; wrong local SOAP stack, missing local SOAP stack, malformed service response, etc. etc.What I am finding is that many of the business people in decision-making positions within my (prospective) clients have little-to-no knowledge of the tangible differences between RESTful web services and SOAP-based web services. To these people a web service is a web service; it's 6 of one, 1/2 dozen of the other. They tend to think What's with all the fuss?Further the ASP.NET developers at these client, developers who have been immersed in the Visual Studio toolset have been conditioned by Microsoft's excellent developer tools marketing to see SOAP as the easy way; just add Visual Studio and the SOAP web service works like magic! And it does, at least until you try to use some other stack to access the web service and/or until you are trying to get people who are not using Visual Studio or adopt the web service; then the picture is very different.When these developers hear me advocate they implement a RESTful web service instead if I get push back I am getting one of two responses; they say:Why go to all the effort of creating a RESTful web service when I've already created a SOAP web service for you to use?  You are just creating more work for me and I have other things to do.There is no benefit to RESTful web services; SOAP is actually much better because I can create an object and then I can program it just like an object. Plus SOAP is used by enterprise developers and we are an enterprise development shop; REST is just not for serious use.As an aside I think one reason I get these responses is because ASP.NET developers often have little-to-no exposure to REST (isn't this article really on the fringe for most ASP.NET developers?) I think they really don't know how little work it takes to create an HTTP GET-only RESTful web service once they already have all the code implemented for a SOAP web service. And I think this happens because Microsoft's approach is to give tools to developers so they don't feel the need to learn the details. Since Visual Studio claims to take care of so many things for developers why should a developer care to learn anything that Visual Studio claims to handle? I know that's what I thought when I used to code web sites for the Microsoft platform. It wasn't until I moved to PHP that I realized what HTTP headers were and that I realized the difference between a 301 and a 302 HTTP status code, and most importantly that I realized these concepts were both easy to understand and vitally important to understand if one wants to create a robust and effective site on the web.MY QUESTION:What I am asking is how do I counter these responses and get my prospective clients to consider creating a RESTful web service? How can I get them to see the many benefits that using a RESTful web service can offer them? Also how can I get them to see the large potential downside of releasing a WordPress plugin that potentially incurs a large support cost?NOTE:If you disagree with my premise that calling RESTful web services are preferable to calling SOAP web services from within a WordPress plugin then please understand that I'm asking for help from people who agree with my premise and ideally I'm not looking to debate the premise. However if you feel the need to argue then please do so in a respectful manner recognizing that we each have the right to our own opinions and that you might never be able to sway me to agree with yours. Which of course, should be okay.
Convincing a Client to Offer a RESTful Web Service instead of a SOAP Service?
rest;web services;communication;client relations
So while I tend to agree with your position, I'm still going to throw out some ideas for balance.  First the issue:Why go to all the effort of creating a RESTful web service when I've already created a SOAP web service for you to use? You are just creating more work for me and I have other things to do.The problem is that they've already done work.  More than likely, based on your description, these web services are WCF services.  Microsoft has really taken the pain out of creating SOAP based web services, so from a development/maintenance perspective it makes sense from the client's perspective just to use the WCF stack.  If they had gone through the trouble of rolling the SOAP stack themselves, you wouldn't have such a hard sell.The problem, as I see it, is that Wordpress (a PHP technology) is ill equipped to handle SOAP.  SOAP is a standard non-standard adaptation of the HTTP protocol.  In short, instead of your typical request and HTTP header information as part of a normal client, there is an XML body as well.  That XML is usually mapped to objects and has its own header information.  In short, it's not something that PHP is designed for out of the box.  Are you using PHP:SOAP?  Hopefully it makes using SOAP easier.However, more on practical strategy later.There is no benefit to RESTful web services; SOAP is actually much better because I can create an object and then I can program it just like an object. Plus SOAP is used by enterprise developers and we are an enterprise development shop; REST is just not for serious use.This is actually much easier to deal with.  In short, most web services I've seen have very simple request models.  All you need to pass in is an ID and some authentication token.  That's the trivial type of interaction that RESTful web services thrive on.  You can return an XML or JSON bound representation of your object quite easily.  In fact, the MS stack has the binding logic for both of those.  Very rarely does a client need to send complex hierarchical data to the server.Practical ways to make both of you happyI know it may sound silly, but have you considered a web service wrapper?  Something that translates the REST calls you need to keep Wordpress happy into the SOAP based calls that makes your client's WCF services happy?  That might be the most peaceful way of dealing with it.  Having done RESTful web services using ASP.NET MVC, it would be trivial to keep things in the Microsoft stack where you need it, and perform the translation to the PHP stack in a sane manner.