Stefan Tilkov writes today:
The SOAP/WSDL/WS-* SOA view of the world is like a statically typed programming language, i.e. C++ or Java — everything is pre-defined, contracts govern everything, nobody can interact without following formal rules … and ideally, everything violating the rules (and policies) will get caught before even going into production.
RESTful HTTP is like a dynamic programming language (i.e. Smalltalk, Ruby, Python, etc.) — you’ll only find out at runtime whether things actually work together, and might well run into errors that would have been caught by a rigorous (and strict) rule-checking process up front; but on the other hand, you have a much more dynamic system, where you can add and remove and change stuff on the fly, and even have some means to react to errors dynamically.
While that may be how things are currently, I don’t know that SOAP and WS-* necessarily implies such an approach (although WSDL may), nor do I think that RESTful services preclude a more static approach.
For instance, I can send messages over a JAX-WS Provider/Dispatch instances without any typing at all. Also, WS standards like WS-Security, WS-RM, etc are supposed to operate in a transparent way, so they shouldn’t affect how you build your service and the amount of “typing” needed. Just like SSL is transparent with HTTP, so these should theoretically be transparent. We also have people like Arjen arguing for a more dynamic approach (I really need to follow on that post too!).
On the other hand we have things like WADL which are bring a more contract oriented approach to RESTful services. The thing that does seem more dynamic about RESTful services is it’s linkability. Where as WSDL based services have operations which are very static, a RESTful data model will provide links for me to navigate. However, I still need to understand the various content-types and data structures. We can exchange these via a contract, put it in documentation, or let the user figure it out for themselves.