REPOSTED: Re: Issue 61: external payload reference/S+A

----- Forwarded by David Fallside/Santa Teresa/IBM on 03/21/2002 01:19 PM
-----
|---------+---------------------------------->
|         |           Christopher Ferris     |
|         |           <chris.ferris@sun.com> |
|         |           Sent by:               |
|         |           w3c-xml-protocol-wg-req|
|         |           uest@w3.org            |
|         |                                  |
|         |                                  |
|         |           03/18/2002 07:08 AM    |
|         |                                  |
|---------+---------------------------------->
  >---------------------------------------------------------------------------------------------------------------------------|
  |                                                                                                                           |
  |       To:       w3c-xml-protocol-wg@w3.org                                                                                |
  |       cc:                                                                                                                 |
  |       Subject:  Re: Issue 61: external payload reference/S+A                                                              |
  |                                                                                                                           |
  |                                                                                                                           |
  >---------------------------------------------------------------------------------------------------------------------------|



All,

Stuart, Marc, Jean-Jacques and I have been working on a
proposal for Jean-Jacques' option B approach for resolution
of issue #61[1]:

"b) Introduce today an abstract attachment 'binding feature', but
defer 'implementation' of this feature to other specifications/notes,
such as, for example SOAP+Attachment or DIME."

We would therefor like to ask that the TBTF to review and consider
this proposal (attached) as an option to put before the WG in
resolution to issue #61.

Cheers,

Stuart, Marc, Jean-Jacques & Chris

[1] http://www.w3.org/2000/xp/Group/xmlp-issues.html#x61

Jean-Jacques Moreau wrote:

> Issue 61[1] concerns the inability for SOAP to carry and reference
> payloads outsite the envelope and to carry non-XML formatted information.
>
>
>
> During the October the 17th, 2001 teleconference[2], it was suggested to
> add to the specification a non-normative, 'for-instance', reference to
> SOAP+Attachment. This was deemed insufficient by some parties. During
> the November the 7th, 2001 teleconference[3], it was suggested to write
> a new charter for the next revision of the XMLP WG that includes an
> 'Attachments' section. The text[4] for this new section was received on
> January the 31st, 2002.
>
>
>
> Although this text was received positively (see e.g. [5]), it has not
> been officially approved, and so it is still unclear whether the next
> revision for SOAP will provide a mechanism, or mechanisms, to carry
> payload outside the envelope and/or non-XML information.
>
>
>
> The following options are available:
>
>   a) Adopt the proposed charter amendment and wait for the next version
> of SOAP to fully support attachments.
>
>
>
>   b) Introduce today an abstract attachment 'binding feature', but defer
> 'implementation' of this feature to other specifications/notes, such as,
> for example SOAP+Attachment or DIME.
>
>
>
>   c) Introduce both an abstract attachment feature and its concrete
> specification.
>
>
>
>
>
> Give our schedule, option c) is probably ouf of scope.
>
>
>
> Jean-Jacques.
>
>
>
> [1] http://www.w3.org/2000/xp/Group/xmlp-issues.html#x61
> [2] http://www.w3.org/2000/xp/Group/1/10/17-minutes.html
> [3] http://www.w3.org/2000/xp/Group/1/11/07-pminutes.html
> [4]
> http://lists.w3.org/Archives/Member/w3c-xml-protocol-wg/2002Jan/0118.html
> [5]
> http://lists.w3.org/Archives/Member/w3c-xml-protocol-wg/2002Feb/0007.html
>
>
>

What follows is a first cut at what you would have to do to add an
attachments hook to the HTTP binding. This was written in a style
of editorial changes, so you will need Part 2 alongside as you
review it.

I make the assumption throughout that different attachment
mechanisms are distinguished by different media-types.

I think our current definition of the property
"transport:CurrentMessage" in Pt2 Section 6 Message Exchange
Patterns [2] alreay covers the case of attachements with the phrase
".....any other information structures that are transferred along
with the envelope due to the action of the message exchange." We
may want to state it less obliquely, but I would argue that it is
set up to think of attachments as part of the messsage.

Given this, there is absolutely nothing that then need to be done
in the MEP description (or any future MEP description) to
specifically handle attachments. Attachments needs to be handled in
the binding specifications themselves, which takes us to the HTTP
binding specification. This gives four places to touch:

        At the Requesting SOAP Node
        ---------------------------
        Formulation of a request message        [3]

        Detection by requester that request format
        is unsupported by responder.              [4]

        Reception of a response message         [5]

        At the Responding SOAP Node
        ---------------------------
        Reception of a request message    [6]

        Formulation of a response message [7]

So dealing with each of these in turn...

Stuart

--
With reference to SOAP 1.2 Part 2 "Editors' copy $Date: 2002/02/27 11:12:07
$ @@ @@ 2001" [1]

The following is written in a style of editorial changes so you
will need Part 2 alongside as you review.


Formulation of the request message. [3]
-----------------------------------
Replace the text describing "Content-type:" header with:

<replacement>
If there are no additional information structures present in
"transport:CurrentMessage" then the value of this header is
"application/soap+xml".

Otherwise, the value of this header is set according to the
specification of an attachment mechanism supported by the local
binding instance, eg. SOAP-with-Attachments [non-normative-ref] or
DIME [non-normative-ref]. If the local binding instance does not
support an attachment mechanism, a local failure arises and the
message cannot be sent.
</replacement>

Add a line to the table with for an HTTP "Accept:" header with the
following description:

<description>
A comma separated list in accordance with RFC 2616 which specifies
which media types are acceptable as a response to the requesting
node. This SHOULD include "application/soap+xml" and the media-
types associated with any attachment options supported by the local
binding instance.
</description>

Replace the text describing the HTTP entity body with:

<replacement>
If there are no additional information structures present in the
"transport:CurrentMessage" then provide an XML 1.0 serialisation of
the SOAP message envelope XML Infoset carried in the
"transport:CurrentMessage" property of the message exchange
context.

Otherwise, serialise the SOAP message envelope XML infoset and
additional information structures in accordance with the
specification of an attachment mechanism supported by the local
binding instance, eg. SOAP-with-Attachments [non-normative- ref] or
DIME [non-normative-ref].
</replacement>


Detection by requester that request format
is unsupported by responder. [4]
-----------------------------------------
This is already handled in 7.4.1.1.2 by the use of the 415 Status
code. The description could call out that a possible cause of this
status codes is that the responding SOAP Node does not support the
attachment packaging mechanism selected by the requesting SOAP
Node.


Reception of a response message [5]
-----------------------------------
Replace "Description"  in receiving state table of 7.4.1.1.3 [5]
with:

<replacement>
Receive HTTP response entity body, which is assumed to be either a
SOAP envelope serialized according the XML 1.0 + Namespaces
specification or a serialisation of a SOAP message envelope and
accompanying information structures conforming to an attachment
mechanism supported by the requesting SOAP Node, eg. SOAP-with-
Attachments [non-normative-ref] or DIME [non-normative-ref] (as
indicated in the HTTP "Accept:" header of the corresponding HTTP
request).
</replacement>

Replace "Actions on Leaving the State" in receiving state table of
7.4.1.1.3 [5] with:

<replacement>
On transitions to Success, instantiate or replace the property
"transport:CurrentMessage" with an XML Infoset representation of
the serialized SOAP message envelope and any information structures
that accompanied the message.
</replacement>


Reception of a request message  [6]
-----------------------------------
In the two transitions in the receiving state table in section
7.4.1.2.1 include "unsupported Content-Type" and
"attachmentFailure", eg bad MIME wrapping to the list of
malformities. Also, in the second bullet of the upper transition
(to Processing) include mention of any accompanying information
structures.

The status code table which follows makes provision of generating a
415 status in the case that the inbound content-type (and hence
attachment mechanism) is not supported.


Formulation of a response message [7]
-------------------------------------

Basically clone the words from the formulation of the request
message. Take care to consider the case that the available
attachment mechanisms at the responding node do not match any
requested by the requesting node. May want to define a fault for
this purpose (but the responding node has processed the message and
thinks it has been successful!) or may want to just 500 internal
server error (no fault), or do the check during inbound processing
and inform the SOAP node (via property) that it will not be
possible to sent attachments with any response (ie only bare
"application/soap+xml") supported.


Remaining work
--------------
It would probably also be worthwhile to say something explicit
about attachements in the introduction to the binding (section 7).

It might also be worthwhile to say something about the use of
content-negotiation ("Accept:" header) to signal what the
requesting node is capable of accepting in responses and the use of
415 status codes to indicate that the responding node cannot handle
the inbound content-type.

Another thing that I have left unsaid is the magic by which cid: or
ids get assigned to attachments. My own view is that from a
conceptual POV we can regard them as part of the abstract
information structure that gets serialised and we don't have to be
to explicit/constraing in the way we specify them.


[1] http://www.w3.org/2000/xp/Group/1/10/11/soap12-part2.html
[2] http://www.w3.org/2000/xp/Group/1/10/11/soap12-part2.html#soapmep
[3]
http://www.w3.org/2000/xp/Group/1/10/11/soap12-part2.html#http-reqbindreqstate

[4]
http://www.w3.org/2000/xp/Group/1/10/11/soap12-part2.html#http-reqbindwaitstate

[5]
http://www.w3.org/2000/xp/Group/1/10/11/soap12-part2.html#http-reqbindrecstate

[6]
http://www.w3.org/2000/xp/Group/1/10/11/soap12-part2.html#http-respbindreceive

[7]
http://www.w3.org/2000/xp/Group/1/10/11/soap12-part2.html#http-respbindrespond

Received on Thursday, 21 March 2002 16:21:34 UTC