W3C home > Mailing lists > Public > public-ws-addressing@w3.org > August 2005

Re: wsa:To -> SOAP1.2's ImmediateDestination

From: Mark Baker <distobj@acm.org>
Date: Fri, 19 Aug 2005 23:39:22 -0400
To: Marc Hadley <Marc.Hadley@Sun.COM>
Cc: public-ws-addressing@w3.org
Message-ID: <20050820033921.GF17056@markbaker.ca>

Marc,

On Fri, Aug 19, 2005 at 03:32:26PM -0400, Marc Hadley wrote:
> On Aug 19, 2005, at 11:10 AM, Mark Baker wrote:
> >>>
> >>wsa:To gives the value of the ultimate recipient, but the SOAP
> >>binding is hop-by-hop so ImmediateDestination could be the address of
> >>a SOAP intermediary instead of the ultimate recipient.
> >
> >Sorry, I don't follow.  I don't know what it means for the WS-A SOAP
> >binding to be hop-by-hop, since the SOAP processing model is end-to- 
> >end.
> >
> See the SOAP 1.2 Rec[1]:
>
> <quote>
> The SOAP Processing Model enables SOAP nodes that include the  
> mechanisms necessary to implement one or more features to express  
> such features within the SOAP envelope as SOAP header blocks (see 2.4  
> Understanding SOAP Header Blocks). Such header blocks can be intended  
> for any SOAP node or nodes along a SOAP message path (see 2.3  
> Targeting SOAP Header Blocks). The combined syntax and semantics of  
> SOAP header blocks are known as a SOAP module, and are specified  
> according to the rules in 3.3 SOAP Modules.
> 
> 
> 
> In contrast, a SOAP protocol binding operates between two adjacent  
> SOAP nodes along a SOAP message path. There is no requirement that  
> the same underlying protocol is used for all hops along a SOAP  
> message path...
> 
> 
> 
> Certain features might require end-to-end as opposed to hop-by-hop  
> processing semantics. Although the SOAP Protocol Binding Framework  
> allows end-to-end features to be expressed outside the SOAP envelope,  
> no standard mechanism is provided for the processing by  
> intermediaries of the resulting messages...
> 
> </quote>

So correct me if I'm wrong, but when you called the WS-A SOAP binding
"hop by hop", you were using it to refer to the part above that says
"a SOAP protocol binding operates between two adjacent SOAP nodes along
a SOAP message path", correct?  I'll assume so.

I thought you were using it to refer to the semantics of messages
(produced by the binding), which in my experience is the more common
use.  If you weren't, that's ok, at least we're on the same page now.

The important point to be made here though, is those two things we're
using the term to refer to are orthogonal; that it's possible to define
a protocol binding which yields a message with semantics that reach
beyond the path between the two nodes.  And that's what the default HTTP
binding does, because HTTP has both end-to-end and hop-by-hop features.
The Request-URI, for example, is end-to-end, hence my concern about the
overlap with wsa:To, which is also end-to-end as you say.

Another way to look at this is the "second node" in the default SOAP
1.2 HTTP binding isn't the one identified by the Request-URI, it's the
one where the HTTP connection terminates, commonly a firewall or cache.

Perhaps an example would help ...

POST http://example.org/order-processor HTTP/1.1
Host: example.org
Content-Type: application/soap+xml
[blank line]
<?xml version='1.0' ?>
<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"> 
 <env:Body>
  <order xmlns="http://retail.example.org/orders">
    [order details go here]
  </order>
 </env:Body>
</env:Envelope>

That message has end-to-end semantics (the method, the Request-URI, the
Content-Type, and the message payload) yet it's produced by the
SOAP/HTTP binding, which, as you point out, is defined "between two
adjacent SOAP nodes".  If we introduced a SOAP/HTTP firewall
(a SOAP intermediary), we'd do it by opening a TCP/IP connection to
some port, and passing that exact same message above across the
connection.

FWIW, this is all consistent with the part of spec quoted above, even
the part about using different protocols for different hops.  Consider
what would happen if we changed the Request-URI in the above example to
mailto:order-processor@example.org.  That's still end-to-end, but
the second hop may very well be by SMTP rather than HTTP, something
that a SOAP/HTTP firewall/proxy may be able to manage for us; HTTP in,
SMTP out, ultimate destination of "mailto:order-processor@example.org"
for both hops.

How's that sound?  I know it's a different model than the one most
people have in mind, but IMO it's the only one consistent with both the
SOAP and HTTP specs, hence my enthusiastic attempts to champion it.

BTW, I should mention that I'm heading off on vacation in a few hours,
and will likely be without email access for a couple of weeks, so feel
free to take your time mulling this over.

Cheers,

Mark.
-- 
Mark Baker.  Ottawa, Ontario, CANADA.          http://www.markbaker.ca
Coactus; Web-inspired integration strategies   http://www.coactus.com
Received on Saturday, 20 August 2005 03:37:45 GMT

This archive was generated by hypermail 2.2.0+W3C-0.50 : Tuesday, 2 June 2009 18:35:08 GMT