Messaging Specifications Index Page

 

Brief

SOAP is a lightweight protocol for the exchange of information in a decentralized, distributed environment. It is an XML-based protocol that consists of three parts: an envelope that defines a framework for describing what is in a message and how to process it, a set of encoding rules for expressing instances of application-defined data types, and a convention for representing remote procedure calls and responses. SOAP can potentially be used in combination with a variety of other protocols; however, the only bindings defined in this document describe how to use SOAP in combination with HTTP and the HTTP Extension Framework.

White papers

XML, SOAP, and Binary Data

This document discusses the architectural issues encountered when using opaque non-XML data in XML applications, including (but not limited to) Web services and SOAP.

Specifications

SOAP

Simple Object Access Protocol (SOAP) 1.1

SOAP 1.1 is the current standard Web Service message protocol.

SOAP Version 1.2 Part 0: Primer

SOAP Version 1.2 Part 1: Messaging Framework

SOAP Version 1.2 Part 2: Adjuncts

SOAP 1.2 is the latest version of SOAP from W3C that has been recently ratified as the emerging standard Web services messaging protocol.

WS-Addressing

Web Services Addressing (WS-Addressing)

WS-Addressing provides transport-neutral mechanisms to address Web services and messages. Specifically, this specification defines XML elements to identify Web service endpoints and to secure end-to-end endpoint identification in messages. This specification enables messaging systems to support message transmission in a transport-neutral manner through networks that include processing nodes such as endpoint managers, firewalls, and gateways.

WS-Addressing was submitted to the W3C in August 2004.

W3C WS-Addressing Working Group

WS-Addressing specification at the W3C

MTOM

SOAP Message Transmission Optimization Mechanism

MTOM describes a mechanism for optimizing the transmission and/or wire format of a SOAP message by selectively re-encoding portions of the message while still presenting an XML Infoset to the SOAP application.
MTOM also describes an Inclusion Mechanism that operates in a binding-independent way, plus a specific binding for HTTP.

WS-Enumeration

Web Service Enumeration (WS-Enumeration)

Get the Adobe Reader here.

WS-Enumeration enables an application to ask for items from a list of data that is held by a Web service. In this way, WS-Enumeration is useful for reading event logs, message queues, or other data collections.

WS-Enumeration was submitted to the W3C in March 2006.

WS-Eventing

Web Services Eventing (WS-Eventing)

WS-Eventing describes how to construct an event-oriented message exchange pattern using WS-Addressing concepts, allowing Web services to act as event sources for subscribers. It defines the operations required to manage subscriptions to event sources, as well as how the actual event messages are constructed.

WS-Eventing was submitted to the W3C in March 2006.

WS-Eventing specification at the W3C.

WS-Transfer

Web Service Transfer (WS-Transfer)

Get the Adobe Reader here.

WS-Transfer defines how to invoke a simple set of familiar verbs (Get, Post, Put, and Delete) using SOAP. An application protocol may be constructed to perform these operations over resources.

WS-Transfer was submitted to the W3C in March 2006.

SOAP-over-UDP

SOAP-over-UDP

The SOAP-over-UDP specification defines a binding of SOAP to user datagrams, including message patterns, addressing requirements, and security considerations.

Get the Adobe Reader here.

SOAP 1.1 Binding for MTOM

SOAP 1.1 Binding for MTOM 1.0 (PDF file)

Get the Adobe Reader here.

This specification describes the application of the MTOM attachment mechanism, originally defined for SOAP 1.2, to SOAP 1.1 envelopes.

Status

SOAP 1.1 was submitted to the W3C and became a W3C Note on 8 May 2000. Most current SOAP implementations are built with support for SOAP 1.1. Work on SOAP version 1.2 has recently been completed in the W3C's XML Protocol working group.

Interoperability testing for SOAP was conducted in the SoapBuilders group.

This version of WS-Addressing was acknowledged by the W3C as a Member Submission on 10 August 2004.

WS-Eventing was published as a public specification on 31 August 2004. This is the second joint publication of the specification.

SOAP-over-UDP was published as a public specification on 8 September 2004. This is the first joint BEA/Lexmark/Microsoft/Ricoh publication of the specification.

WS-Enumeration was published as a public specification on 16 September 2004. This is the first joint BEA/Computer Associates/Microsoft/Sonic Software/Systinet publication of the specification.

WS-Transfer was published as a public specification on 16 September 2004. This is the first joint BEA/Computer Associates/Microsoft/Sonic Software/Systinet publication of the specification.

SOAP 1.1 Binding for MTOM 1.0 was published as a public specification on 2 March 2006. This is the first joint IBM/Oracle/Microsoft/SAP publication of the specification.

Web Services Messaging Implementation Details

Schemas

WS-Addressing

WS-Enumeration

WS-Eventing

WS-Transfer

SOAP 1.1

SOAP Envelope

SOAP Encoding

SOAP 1.2

SOAP Envelope

SOAP Encoding

WSDL

WS-Enumeration

WS-Eventing

WS-Transfer

Superseded Specifications

Web Services Addressing (WS-Addressing) (March 2004)

This specification has been superseded by a more recent version dated August 2004.

Web Services Eventing (WS-Eventing) (January 2004)

This specification has been superseded by a more recent version dated August 2004.

Web Services Routing (WS-Routing) (October 2001)

This specification has been superseded by the Web Services Addressing (WS-Addressing) specification.

Web Services Referral (WS-Referral) (October 2001)

This specification has been superseded by the Web Services Addressing (WS-Addressing) specification.

Direct Internet Message Encapsulation (DIME)

This specification has been superseded by the SOAP Message Transmission Optimization Mechanism (MTOM) specification.

SOAP Messages with Attachments (SwA) (December 2000)

This specification has been superseded by the SOAP Message Transmission Optimization Mechanism (MTOM) specification.

Proposed Infoset Addendum to SOAP Messages with Attachments (PASwA)

This specification has been superseded by the SOAP Message Transmission Optimization Mechanism (MTOM) specification.

Superseded Schemas

WS-Addressing (March 2003)

WS-Addressing (March 2004)

WS-Eventing (January 2004)

WS-Routing (2001)

Superseded WSDL

WS-Eventing (January 2004)

AppNotes

Introduction

SOAP is a lightweight, extensible, XML-based protocol for information exchange in a decentralized, distributed environment. Primarily, SOAP defines a framework for message structure and a message-processing model. SOAP also defines a set of encoding rules for serializing data and a convention for making remote procedure calls. The SOAP extensibility model provides the foundation for a wide range of composable protocols running over a variety of underlying protocols like HTTP.

Goals and Non-Goals

SOAP has been designed to be simple and extensible. It defines a message-processing model but does not itself define any application semantics, such as programming model or implementation-specific semantics. Although SOAP may be used as a foundation for building complex systems, most features from traditional message systems and distributed object systems are not part of the core SOAP specification.

Details

A SOAP message is based on XML and contains the following parts:

  • The Envelope is the top-level container representing the message.
  • The Header is a generic container for added features to a SOAP message in a decentralized manner. SOAP defines attributes to indicate who should deal with a feature and whether understanding is optional or mandatory.
  • The Body is a container for mandatory information intended for the ultimate message receiver. SOAP defines one element for the body to report errors.

As Figure 1 below illustrates, a SOAP message may have multiple application-defined blocks within the Header and Body containers.

Figure1. SOAP message structure

The listing below shows a sample SOAP message that is an alert message to a Web service. The request contains a text message (in the Body) and is marked to indicate that the message isn't interesting after the given time (in the Header).

<?xml version="1.0" encoding="UTF-8" ?>
<env:Envelope xmlns:env="http://www.w3.org/2001/09/soap-envelope">
  <env:Header>
    <n:alertcontrol xmlns:n="http://example.org/alertcontrol">
      <n:priority>1</n:priority>
      <n:expires>2001-06-22T14:00:00-05:00</n:expires>
    </n:alertcontrol>
  </env:Header>
  <env:Body>
    <m:alert xmlns:m="http://example.org/alert">
      <m:msg>Pick up Mary at school at 2pm</m:msg>
    </m:alert>
  </env:Body>
</env:Envelope>

SOAP messages may be sent using HTTP, SMTP, TCP, and others.

Implications

SOAP is the foundation upon which other protocols may be built to provide the complete set of services required by secure and reliable messaging environments. For example, WS-Security and WS-License may be used to ensure the integrity and/or confidentiality of SOAP messages. Protocols like these take advantage of the modular packaging of the SOAP message structure wherein multiple SOAP-based protocols can logically co-exist in the same message. This composability allows SOAP to be used in a large variety of systems ranging from small devices to global Web services.

SOAP defines a framework for message structure, but with the exception of SOAP faults, does not define messages types; WSDL may be used to describe the message types a Web service can send and receive. SOAP is an XML-based protocol; MTOM may be used to optimize transmission of binary data underlying a SOAP message.