SOAP – Simple Object Access Protocol – is probably the better known of the two models.
SOAP relies heavily on XML, and together with schemas, defines a very strongly typed messaging framework.
Every operation the service provides is explicitly defined, along with the XML structure of the request and response for that operation.
Each input parameter is similarly defined and bound to a type: for example an integer, a string, or some other complex object.
All of this is codified in the WSDL – Web Service Description (or Definition, in later versions) Language. The WSDL is often explained as a contract between the provider and the consumer of the service. In programming terms the WSDL can be thought of as a method signature for the web service.
SOAP provides the Messaging Protocol layer of a web services protocol stack for web services. It is an XML-based protocol consisting of three parts:
- an envelope, which defines the message structure[1] and how to process it
- a set of encoding rules for expressing instances of application-defined datatypes
- a convention for representing procedure calls and responses
SOAP has three major characteristics:
- extensibility (security and WS-Addressing are among the extensions under development)
- neutrality (SOAP can operate over any protocol such as HTTP, SMTP, TCP, UDP, or JMS)
- independence (SOAP allows for any programming model)
As an example of what SOAP procedures can do, an application can send a SOAP request to a server that has web services enabled—such as a real-estate price database—with the parameters for a search. The server then returns a SOAP response (an XML-formatted document with the resulting data), e.g., prices, location, features. Since the generated data comes in a standardized machine-parsable format, the requesting application can then integrate it directly.
The SOAP architecture consists of several layers of specifications for:
- message format
- Message Exchange Patterns (MEP)
- underlying transport protocol bindings
- message processing models
- protocol extensibility
SOAP evolved as a successor of XML-RPC, though it borrows its transport and interaction neutrality from Web Service Addressing[2] and the envelope/header/body from elsewhere (probably from WDDX).