April 17, 2001, 5:29 PM — Alan Kotok, XML.com
The Electronic Business XML (ebXML) project released three more technical specifications for review on 28 March, including a new draft document on messaging services. This part of ebXML -- formerly known as transport, routing, and packaging -- had made more early progress than the other technical features, but it also came under more pressure to include the work of other initiatives, specifically the Simple Object Access Protocol (SOAP). Enhancements to the original SOAP specification made it easier for ebXML to join forces. But it also marked something of a change in operation for ebXML, now more willing to make accommodations with other related initiatives in order achieve its goal of a single worldwide e-business standard.
SOAP in a Nutshell
SOAP provides a simple and lightweight method for exchanging structured data. It defines the message package, offers encoding guidelines for data used in applications connected by these messages, and provides rules for representing remote procedure calls (RPCs), a type of online interaction in a distributed environment. The authors (from Microsoft Corp., IBM and its Lotus Development subsidiary, DevelopMentor, and Userland Software) submitted version 1.1 of SOAP to the W3C as a Note in May 2000.
SOAP's importance extends beyond its definition of an XML-based message protocol. Several other e-business specifications based on XML -- most notably BizTalk and Universal Description, Discovery and Integration (UDDI) -- use SOAP for its messaging functions.
SOAP messages are XML documents defined in a mandatory SOAP envelope. Within the envelope are a SOAP header and body. SOAP messages must have a body, but the header is not required in all instances. The XML namespace, http://schemas.xmlsoap.org/soap/envelope/ is used for the envelope. Namespaces allow access of multiple document type definitions (DTDs) or schemas in an XML document by providing a unique prefix that prevents duplication of element or attribute names.
The SOAP envelope serves as the first element in the document and thus identifies it as a SOAP message. The SOAP body contains the information transmitted to the receiver. Each message must have a body, so there cannot be an empty SOAP message. If the message has a SOAP header, it appears as the first child element in the envelope, and before the body.
The SOAP header allows the sender to add management or control information in the message, important for routing, security, or proper handling by the recipient. This element has very few rules of its own, but relies on XML namespaces identified by the sender for its semantics.
Reversing an Earlier Decision
Including SOAP in the messaging specifications reversed an earlier decision by the ebXML messaging project team to develop its own message structure. The team had originally proposed an enveloping format combining Multipurpose Internet Mail Extensions (MIME) for the overall message envelope as well as header and body containers. In the original plan, the header container written in MIME would have XML data providing identification and description of the message.
At the August 2000 ebXML meeting in San Jose, California, Rik Drummond of The Drummond Group and chair of the ebXML Transport-Routing-Packaging (messaging) project team, announced the results of its review of SOAP. The review predicted that with the high production volumes often encountered in e-business, SOAP's all-XML messaging could overwhelm most XML validators. On the other hand, the combination of MIME and XML headers proposed for ebXML messaging would likely provide more robust support. (See ebXML: Assembling the Rubik's Cube, XML.Com, 16 August 2000).
SOAP in its original form also did not support non-XML attachments. Some e-business messages, however, will carry non-XML binary files, such as digitized engineering drawings or patient X-rays. The messaging project team recommended the MIME multipart/related media type for the overall ebXML envelope in part for its ability to attach these binary files.













