SOAP

Use XML for communication from one system to another

The SOAP protocol allows you to use XML to communicate between systems that are connected using lower-level Internet protocols. It provides a standard envelope for XML information to be transmitted through network messages, and optional conventions for the body of such messages. Understand the history of SOAP, as well as its relation to Web services, Service-Oriented Architecture (SOA), and Representational State Transfer (REST).

Contributors:  W3C

25 April 2007 (First published 06 February 2007)

The SOAP protocol allows you to use XML to communicate between systems that are connected using lower-level Internet protocols. It provides a standard envelope for XML information to be transmitted through network messages, and optional conventions for the body of such messages. Understand the history of SOAP, as well as its relation to Web services, Service-Oriented Architecture (SOA), and Representational State Transfer (REST).

SOAP [W3C Recommendation] (which officially is no longer an acronym despite the capitalization) is a protocol for using XML to communicate between systems that are connected using lower-level Internet protocols. Many consider SOAP the foundation of XML Web services, a set of technologies for managing and organizing the interaction of systems connected using XML data formats and Internet communications protocols. SOAP was originally developed among a small, odd assortment of individuals from a diverse mix of companies, including IBM®. It quickly grew in popularity, because it provided similar capabilities to earlier efforts toward XML messaging, but with a more solid architecture and more commercial support. Development of SOAP passed to the World Wide Web Consortium (W3C), which developed SOAP 1.2, having made a lot of architectural improvements but having also made a lot of controversial compromises. The SOAP protocol defines an XML envelope format, which can contain a pseudo-XML payload (the fact that the actual payload of a SOAP message is restricted from using the full capabilities of XML is a matter of great contention).

XML Web services are closely related to a more general concept called Service-Oriented Architecture (SOA), but neither of these concepts, despite common misconception, mandate SOAP. A large group of people advocate the idea of simply exchanging raw XML documents directly over HTTP, an approach loosely advocated under the banner of Representational State Transfer (REST). REST is the name given to the architectural style of the Web by one of its architects, Roy Fielding. Advocates of REST style for Web services complain that SOAP is complex, stunts its XML payload, and doesn't take enough advantage of the fundamental strengths of the Web. SOAP advocates have worked to address these matters, by shifting emphasis from SOAP's remote procedure call (RPC) roots to what is called the document-literal style of SOAP. In the RPC style, the data to be transmitted is marshalled into discrete data types in a special XML payload format (called the SOAP encoding). In the document-literal style, the XML payload consists of more natural XML formats that generally tend to be more descriptive and human-readable.

The SOAP edifice

A huge array of standards build on SOAP, but these are outside the scope of this specification. The following resources are good sources of information on these standards:

One antecedent of SOAP that is still in fairly wide use is XML Remote Procedure Calls (XML-RPC) [community specification]. XML-RPC defines procedure calls encoded in XML and communicated over HTTP. It retains some popularity because of its simplicity (the full specification is less than 10 printed pages) and the fact that most languages and many application frameworks now have standard or readily available XML-RPC implementations. It does have some notable weaknesses, including primitive data typing and lack of support for character encodings (an astonishing flaw given its use of XML).

Resources

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=1
Zone=XML
ArticleID=193484
SummaryTitle=SOAP
publish-date=04252007