it will be no simple matter
to extend a RESTful Web service to support it in an interoperable
manner. Furthermore, according to our experience several of the
decisions that are very easy to make for RESTful services lead to
significant development efforts and technical risk, for example the
design of the exact specification of the resources and their URI addressing
scheme.
From our comparison it can also be seen that the two styles
are rather similar, as long as the same subset of technology decisions
is compared, for example when ignoring the more advanced
features of the WS-* stack and only comparing POX/HTTP and
SOAP/HTTP. It could even be argued that these two approaches
are two technology-level variants of the same conceptual design.
Assuming that the enterprise-level features of WS-* (transactions,
reliability, message-level security) are not required, the key
decision drivers at present are degree of flexibility and control,
but also development efforts and technical risk (in implementation
design, development, and maintenance), degree of open source
and vendor tool support, and programming interface convenience.
REST scores better with respect to flexibility and control, but requires
a lot of low-level coding; WS-* provides better tool support
and programming interface convenience, but introduces a dependency
on vendors and open source projects. The main conclusion
from this comparison is to use RESTful services for tactical, ad hoc
integration over the Web (à la Mashup) and to prefer WS-* Web
services in professional enterprise application integration scenarios
with a longer lifespan and advanced QoS requirements.