Issue 421: Handling of comments in SOAP

This note is in fulfillment of the action item I took on today's call
regarding issue 421.  Specifically, the purpose of this note is to outline
our options for dealing with comments in SOAP envelopes and bindings.

Status quo: as best I can tell the editors draft is currently inconsistent.
It describes the insertion and removal of comments by SOAP intermediaries
[1], but the chapter 5 definition of a SOAP envelope does not allow for
comments at all [2].  On today's teleconference I believe we agreed to the
following, at least informally:

* The draft is indeed inconsistent, and therefore something must be done
presumably before going to Proposed Recommendation.

* Our general inclination is to allow comments in all or at least most of
the places where the Infoset recommendation would allow them to appear in
an envelope.  Gudge has suggested that we not allow them outside of the
envelope... I think I agree, but want to think about it a bit more.

* There seemed to be consensus that the existing rules regarding
intermediaries are probably OK [1].

* There was a suggestion (by Marc Hadley, I think) that instead of
explicitly listing comments in each of the sections of chapter 5, we make a
blanket statement that they are allowed everywhere within the envelope.
This is basically an editorial suggestion.

So, there are a few loose ends to be finalized in the list above, but none
of them seem unduly problematic.  E-mail is certainly solicited if anyone
has strong feelings regarding any of the points above.

The major area of uncertainty seems to be one that I brought up:
specifically, what are the obligations of a binding with respect to
transmission of comments?  As best I can tell, the options are roughly:

A. They're in the Infoset...all bindings must transmit them.  I think that
if we merely update chapter 5 to allow comments, this will be the resulting
behavior as we already require bindings to transmit the infoset.  Given
that it is in some ways a subtle point and that many implementers will be
tempted to cheat, I suggest we consider a clarifying note in the section on
transport bindings and/or making sure that this is covered in our
conformance work.  Advantages of requiring bindings to transmit comments:
(a) it seems to fit the existing model that bindings transmit the infoset
(b) probably provides least astonishment for users (c) tends not to break
signatures, regardless of the canonicalization selected. Disadvantages:
rules out implementations in which either the binding or the node wishes to
represent the message in a manner that eliminates comments.  One can
imagine many optimized forms of XML on the wire that would be complicated
by the requirement to carry comments.  Many programming systems deserialize
SOAP messages into data structures that make it difficult to carry comments
(maybe or maybe not such data structures break signatures, but signatures
are only used some of the time)

-or-

B. Indicate that comments anywhere in the Infoset are at risk of
disappearing during transmission.
B1:  Bindings SHOULD transmit comments
B2:  Bindings MAY transmit comments
(the above are all variations on the same theme) I think the advantages and
disadvantages are the inverse of those above.  Many optimized
representations both in memory (including message queue databases) and on
the wire become possible, but the application is provided with a less
useful contract, and signatures are more subject to breakage.  Note that
the W3C has recommendations for two canonicalization's of which is
sensitive to the presence of comments, and one of which removes comments
during canonicalization (the choice is modeled as a switch on an otherwise
common canonicalization model) [3] .
B3:  We might have a rule that varies according to the location of comment.
For example, we might require that comments be preserved within header
entries and body child elements, but not otherwise.  Not sure whether this
is the best or the worst of both worlds.

-or-

C: I suppose we could change our minds and disallow comments entirely.
This would make the model simpler, but would disallow many sorts of useful
annotations within the SOAP message, including for purposes of debugging.

-or-

D. Another option we did not explicitly discuss on the phone would be to
make all use of comments non-normative.  We could make the relay rules for
intermediaries non-normative guidelines, and just indicate that all bets
are off.  Your mileage may vary... this binding or that binding may
transmit them, and you can do what you like with them.  I >think< this is a
bit different than the "B" options, but not by much in practice.

I think that about covers the options.  Thanks.

Noah

[1]
http://www.w3.org/2000/xp/Group/2/06/LC/soap12-part1.html#soapinterminfoset
[2] http://www.w3.org/2000/xp/Group/2/06/LC/soap12-part1.html#soapenvelope
[3] http://www.w3.org/TR/xml-c14n

------------------------------------------------------------------
Noah Mendelsohn                              Voice: 1-617-693-4036
IBM Corporation                                Fax: 1-617-693-8676
One Rogers Street
Cambridge, MA 02142
------------------------------------------------------------------

Received on Wednesday, 2 April 2003 17:24:27 UTC