I (and commenters on my blog) have discussed REST vs. SOAP/WSDL a fair bit. My Interoperability vs. Integration post somehow turned into a long comparison of the two approaches.
A lot of what it boils down to for me is that independently-declared and strongly-typed interfaces are a good thing. As I discussed in declared interfaces, WSDL creates a declared interface for a Web service. Back in a February 9, 2006 comment, Richard G Brown explained why a Web services interface is important:
In the SOAP/WSDL/WS-* case, a provider says: "I can do X. If you want me to do it, here's how you get in touch with me. This is the information you must give me. This is what I'll give in return". One of the great advantages of WSDL is that you can feed a WSDL to a tool and it can take care of all the gunk - you just need to populate the appropriate fields in some object somewhere, for example.Now, in typing rest, my collegue Patrick Mueller contemplates that he "wants some typing [i.e. contracts] in the REST world" and, among other things, discusses WADL (Web Application Description Language). Sadly, he's already gotten some backlash, which he's responded to in not doing REST.
In the "all the interfaces are the same" case, surely the provider still has to give you the same information? You need to know what information to send and you need to know what it will give back and you need to know how to tell it that you want it to perform a specific service for you.
In the absence of WSDL (which, to my mind, is the important thing), how to you describe the services you're providing? Can you feed it into a tool?
So I (and Richard, and others?) think that the major advantage of WSDL over REST is the declared interface. Now some of the REST guys seem to be coming around to this way of thinking and are thinking about declared interfaces for REST. I then wonder if and how REST with declared interfaces would be significantly different from WSDL (w/SOAP). Patrick and others seem to believe that WADL is much simpler than WSDL, so I assume they're correct although don't know enough about it to understand why WADL is simpler than WSDL. REST is all about simplicity, so a simpler WSDL (e.g. WADL) would be appealing. Since a lot of the REST vs. WSDL discussion has been about declared interfaces, I wonder how WADL/REST and WSDL/SOAP would differ, and if that would bring the two sides together or better clarify why the two sides disagree.
I've Googled around for a WADL-WSDL comparison, but haven't found one. Even Wikipedia failed me, with a really brief and weak Web Application Description Language entry. For now, the best discussion on what the heck WADL is and what it means to Java is Marc Hadley's Blog: see Introducing WADL and Mapping WADL to Java.