- From: David Hull <dmh@tibco.com>
- Date: Tue, 15 Mar 2005 00:26:11 -0500
- To: "public-ws-addressing@w3.org" <public-ws-addressing@w3.org>
- Message-id: <423671F3.5040506@tibco.com>
I've been going back through the core and SOAP specs after today's
discussion, and I'm still concerned about the difference between
reply/fault and any other kind of endpoint. I also have an at least
partially worked out example below the horizontal line, which I'd
encourage everyone to look through and comment on even if the concerns
below hold no interest.
To take Dave O's example, as I understand it, if I have a MEP that's
basically request/reply but also has an alternate reply, then two of the
three endpoints are considered MAPs, have properties defined for them in
the SOAP addressing module, and appear in the wsa:namespace. The third
is just some random SOAP header.
While it is true that one can always put an EPR wherever one wants,
whether as a header or in some distinguished place in the body, or
someplace out of band for that matter, it still seems strange to have
such an asymmetry instead of somehow allowing for an extensible set of
endpoints. It seems particularly strange when we explicitly make
[relationship] extensible. We could just as well have (and maybe once
did have?) an [in-reply-to] property and depend on SOAP extensibility
for anything further.
I would think that the reasons for making [relationship] extensible are
the usual ones: People are bound to define relationships other than
in-reply-to, and we would like to give them a standard place to put
those, in such a way that a processor could generically gather "all
related messages" from a message without having to understand what
in-reply-to and whatever other headers mean. I'm not precisely sure
what the use case would be for this, but it seems like a good thing overall.
I'm hard-pressed to see why it wouldn't be equally good to do the same
thing with associated endpoints. As with [relationship], one could then
generically determine what endpoints might be expected to receive
messages due to a given message, without having to understand what my
custom "alternate-reply" header means (or assume that any unknown EPR in
a header is liable to carry ongoing traffic). This might make routing
easier, or help predict traffic volume, or have entirely other uses. If
anything, this seems like it might be more directly useful than handling
[relationship] generically.
If nothing binding documents for new interactions might be somewhat
easier to read. Along those lines, here is a draft of what an
"in-out-alternateOut" MEP might look like under the status quo. I'm
neither endorsing nor disparaging this version (at this point). I'm
more interested in whether this looks about right so far as what would
be required. Any feedback would be welcome.
------------------------------------------------------------------------
XXX. In-out-alternateOut
This is a two-way MEP. A reply is expected hence mandating [reply
endpoint] in the request message. The response message might be a
fault. */In addition, an alternate reply may occur, hence mandating
[alternate reply endpoint] in the request message. The [alternate reply
endpoint] property is an abstract property like the standard Message
Addressing Properties. If present, it MUST be mapped to the SOAP
yatns:AlternateReply header, analogously to the mapping of Message
Addressing Properties described in sections 3 and 4 of the WS-Addressing
SOAP binding.
/*
*/When formulating an alternate reply, follow the rules in section 3.2
of the WS-Addressing Core Spec (Formulating a Reply Message), but with
rule 1 carrying the following additional clause:
/*
* */If the reply is an alternate reply message, select the EPR from
the incoming message's [alternate reply endpoint] property. If
none is present, the processor MUST fault./*
*/
/*
Table xxx-1. Message addressing */and other /*properties for in message.
Property Mandatory Description
[destination] Y Provides the address of the intended receiver of this
message
[action] Y Identifies the semantics implied by this message
[source endpoint] N Message origin. Unused in this MEP, but may be
included to facilitate longer running message exchanges.
[reply endpoint] Y Intended receiver for the reply to this message.
/[alternate reply endpoint]/
/Y/
/Intended receiver for alternate replies to this message./
[fault endpoint] N Intended receiver for faults related to this
message. May be included to direct fault messages to a different
endpoint than [reply endpoint].
[message id] Y Unique identifier for this message. Used in the
[relationship] property of the out message.
[relationship] N Indicates relationship to a prior message. Unused in
this MEP, but may be included to facilitate longer running message
exchanges.
*/
/*
Table xxx-2. Message addressing /*and other */properties for out
message. Property Mandatory Description
[destination] Y Provides the address of the intended receiver of this
message
[action] Y Identifies the semantics implied by this message
[source endpoint] N Message origin. Unused in this MEP, but may be
included to facilitate longer running message exchanges.
[reply endpoint] N Intended receiver for replies to this message.
Unused in this MEP, but may be included to facilitate longer running
message exchanges.
/[alternate reply endpoint]/
/N/
/Intended receiver for alternate replies to this message. Unused in
this MEP, but may be included to facilitate longer running message
exchanges./
[fault endpoint] N Intended receiver for faults related to this
message. Unused in this MEP, but may be included to facilitate longer
running message exchanges.
[message id] N Unique identifier for this message. Unused in this MEP,
but may be included to facilitate longer running message exchanges.
[relationship] Y Indicates that this message is a response to the in
message using the in message [message id] value and the predefined
|http://www.w3.org/@@@@/@@/addressing/reply| IRI.
*/
/**/
/*
Table xxx-3. Message addressing /*and other */properties for
alternateOut message. Property Mandatory Description
[destination] Y Provides the address of the intended receiver of this
message
[action] Y Identifies the semantics implied by this message
[source endpoint] N Message origin. Unused in this MEP, but may be
included to facilitate longer running message exchanges.
[reply endpoint] N Intended receiver for replies to this message.
Unused in this MEP, but may be included to facilitate longer running
message exchanges.
/[alternate reply endpoint]/
/N/
/Intended receiver for alternate replies to this message. Unused in
this MEP, but may be included to facilitate longer running message
exchanges./
[fault endpoint] N Intended receiver for faults related to this
message. Unused in this MEP, but may be included to facilitate longer
running message exchanges.
[message id] N Unique identifier for this message. Unused in this MEP,
but may be included to facilitate longer running message exchanges.
[relationship] Y Indicates that this message is a response to the in
message using the in message [message id] value and the predefined
|http://www.alternate.org/addressing/alternateReply| IRI.
*/
/*
Received on Tuesday, 15 March 2005 05:26:46 UTC