SOAP Cleaned Up for Real-World Deployments
The SOAP scum is clearing up. After rigorous testing and review, the W3C say we could have a final SOAP 1.2 spec next month. The group has resolved interoperability issues and made hundreds of other technical fixes. Further, the legal clouds that hung over royalty-free SOAP have dissipated, as the vendors that threatened to sue for property rights have changed their minds.
Specifically, the W3C issued a formal"Proposed Recommendation" to adopt SOAP 1.2 as a formal W3C specification. The announcement puts SOAP 1.2 within weeks of final adoption, as final review comments are due June 7.
This next-to-last-step phase of the SOAP 1.2 adoption process underscores two key elements about SOAP 1.2's ability to provide platform interoperability, the W3C said:
- Implementation experience has been gathered to demonstrate that SOAP processors based on the specification are implementable and have compatible behavior; and
- An implementation report shows that there are at least two different and interoperable implementations of every mandatory and optional feature. (The W3C's evidence for this report is currently being summarized and is available here.)
Interoperability is a key concern for SOAP 1.2, as one of its goals is to encapsulate remote procedure call (RPC) functionality using the extensibility and flexibility of XML.
[SOAP Part 2 section 4 has defined a uniform representation for RPC invocations and responses carried in SOAP messages. SOAP 1.2 integrates core XML technologies. SOAP 1.2 is designed to work seamlessly with W3C XML schemas, maximizing SOAP's utility with a broad range of XML tools, and paving the way for future work on WSDL. It also makes use of XML Namespaces as a flexible and lightweight mechanism for handling XML language mixing.]
No less than W3C's director and the "father" of the World Wide Web, the famed Tim Berners-Lee, gave developers the green light to begin exploring SOAP 1.2. In a prepared statement, Berners-Lee said, "Starting today, developers who may have hesitated to pick up SOAP 1.2 should take a look. After resolving over 400 issues -- including over 150 from SOAP/1.1 -- and delivering evidence of rigorous implementations, the W3C XML Protocol Working Group has produced for final review a real SOAP standard: SOAP 1.2."
SOAP 1.2's standing as a W3C standard has been under a cloud since late last year, when WebMethods and Epicentric suggested that they might maintain rights to some of their technology that led to the development of SOAP. (Seeearlier IDN coverage of SOAP.) Both have since dropped such claims. This conflict could have complicated the W3C adoption of SOAP, as the organization is poised to adopt a royalty-free approach to standards adoption, in place of its RAND (Reasonable, Non-Discriminatory) licensing that would allow companies to impose fees for technology use.
The SOAP 1.2 documents are broken into three (3) distinct sections:
Primer (Part 0); which describes how SOAP may be used, by describing representative SOAP message structures and message exchange patterns;
Messaging Framework (Part 1); which defines the SOAP envelope. Specifically, the framework provides
- A processing model which specifies the rules for processing a SOAP message;
- An extensibility framework that enables developers to use extensions inside and outside the SOAP envelope;
- The message construct that comprises the rules for constructing SOAP messages; and
- The protocol binding framework, or the rules for specifying the exchange of SOAP messages over underlying protocols such as HTTP.
and Adjunct (Part 2), which defines a data model for SOAP. This data model section includes rules for
- Representing remote procedure calls (RPCs);
- Encoding SOAP messages and
- Describing SOAP features and SOAP bindings. It also provides a standard binding of SOAP to HTTP 1.1, allowing SOAP messages to be exchanged using the mechanisms of the World Wide Web.
Invoking SOAP RPC with SOAP 1.2
SOAP 1.2 specifies that to invoke a SOAP RPC, the following information is needed:
- The address of the target SOAP node.
- The procedure or method name.
- The identities and values of any arguments to be passed to the procedure or method together with any output parameters and return value.
- A clear separation of the arguments used to identify the Web resource that is the actual target for the RPC, as contrasted with those that convey data or control information used for processing the call by the target resource.
- The message exchange pattern that will be employed to convey the RPC, together with an identification of the so-called "Web Method" to be used.
- Optionally, data that may be carried as a part of SOAP header blocks.
The W3C's Proposed Recommendation document presents several code samples to illustrate several operations, including
a SOAP message expressing daat for a travel reservation;
a SOAP response to refine some information in the request, and
a SOAP RPC request with a mandatory header and input parameters.
Through an form available from the Call for Review, Advisory Committee representatives should send comments to the Team-only list firstname.lastname@example.org until June 7.