SOAP
Stands for:

Simple Object Access Protocol

What is it:

SOAP brings its own protocol and focuses on exposing pieces of application logic (not data) as services.

Addresses : Method

Transport Protocol Supported:

SOAP can be sent over almost any protocol such as HTTP, SMTP, TCP, or JMS.

SOAP is Language, platform, and transport independent.

Data vs Function Driven :

SOAP is strongly function-driven

URL Structure / Metadata:

URL structure depends on functionality.

Operation / Function Dependability:

For every operation need to write separate function / Method.

 

Data formats Supported:

SOAP supports XML by default.

 

Caching:

SOAP based reads cannot be cached.

Recommended For:

Secure applications, for example - Banking.

Supports WSDL: Web Services Description Language (WSDL) - SOAP depends to a large degree on the language you use.

HTTP 1.1 verbs:

SOAP also defines a binding to the HTTP protocol. When binding to HTTP, all SOAP requests are sent through GET, POST request.

 

Error Handling:

SOAP features is built-in error handling.

If there’s a problem with your request, the response contains error information that you can use to fix the problem.

Framework:

Strongly typed messaging framework

Defines Contract:

The WSDL is often explained as a contract between the provider and the consumer of the service.

Operations vs Accessing Named Resources:

SOAP exposes operations

e.g.

switchCategory(User, OldCategory, NewCategory)

Every operation the service provides is explicitly defined, along with the XML structure of the request and response for that operation. Each input/output parameter is similarly defined and bound to a type: for example an integer, a string, or some other complex object.

Web Services:

SOAP has very little if anything to do with the Web.

Example:

Google authentication

Distributed system:

Works well in distributed enterprise environments.

WS* standards:

Provides significant pre-build extensibility in the form of the WS* standards :

WS-Addressing, WS-Policy, WS-Security, WS-Federation, WS-ReliableMessaging, WS-Coordination, WS-AtomicTransaction, and WS-RemotePortlets.

Security:

SOAP is more secured that REST services.

It also provides a standard implementation of data integrity and data privacy.

WS-ReliableMessaging:

SOAP has successful/retry logic built in and provides end-to-end reliability even through SOAP intermediaries.

WS-AtomicTransaction:

Need ACID Transactions over a service, you’re going to need SOAP.

Weight:

SOAP is heavyweight than REST.

Performance and Scalability:

REST has better performance and scalability - as it supports JSON.

Fast (no extensive processing required) and supports JSON.

Easier to Use / Flexible and Efficient:

REST is easier to use for the most part and is more flexible, efficient.