Twenty Differences Between SOAP and REST Webservices

Even though comparing SOAP and REST Webservices will be like comparing apples and oranges because one is a protocol the other is an Architecture, I have made an attempt to expose twenty differences aimed at helping people make a decision on using one vs another. Also if you are new to SOAP Webservices, read my article here on using SOAP UI tool to demonstrate the use of SOAP Request Response.

Acronym Simple Object Access Protocol Representational State Transfer
Efficiency SOAP Uses XML which is not very efficient and may not be a good fit for some languages. SOAP can be slow and is definitely a heavyweight choice. REST is a lightweight protocol and is fast.
Format SOAP has one common and expressive format REST response can be of multiple types.
Security Security can be implemented using WS-Security, WS-Trust and WS-SecureConversation Security is implemented in terms of HTTP andSSL
Protocols SOAP can be used over other protocols not just HTTP such as HTTPS, SMTP, TCP, UDP, JMS. SOAP itself is a protocol. REST is completely based on HTTP and URI’s. REST is not a protocol in itself
Reliability End to end communication is reliable via WS-ReliableMessaging which does retries. The client does not need to retry. REST expects the client implementation to handle communication failures by retrying
Simplicity More complex due to client creation requirements. SOAP also has several parts to it such as envelope, Header, Body, Attachments and Fault. Raw HTTP calls via GET, POST, PUT, DELETE and is simpler invoke
Data The request and response are in XML format. The response object can be on several formats such as XML, JSON, RDF etc.
Capabilities Exposes  Operation and types of data. Exposes Resources
Describing interface WSDL No particular standard
Transactions Support ACID transactions via WS-AtomicTransaction No particular standard
Caching SOAP Reads cannot be cached REST reads can be cached.
Dependency SOAP cannot use REST RESTful architecture may use HTTP or SOAP as the underlying communication protocol.
Scalability Less scalable than REST More Scalable than SOAP
Network Works pretty well in distributed enterprise environments REST assumes direct point to point communication
Extensibility SOAP is extensible in the forms of WS* standards. There are no particular standards in extending REST.
Learning Curve SOAP has a steep learning curve REST has a smaller learning curve.
Interface SOAP  interfaces are not uniform REST provides a uniform interface.
Formal Contract SOAP provides a format contract between the provider and consumer There is no formal contract between the provider and consumer in a RESTful webservice.
State SOAP provides mechanism for stateful communication REST is a totally stateless operation.