- From: Jacek Kopecky <jacek@systinet.com>
- Date: Tue, 5 Mar 2002 16:30:19 +0100 (CET)
- To: "Williams, Stuart" <skw@hplb.hpl.hp.com>
- cc: "'Mark Baker'" <distobj@acm.org>, <xml-dist-app@w3.org>
Stuart,
thanks for this analysis. You seem to suggest that the sole
existence of the transport binding framework is based on the
tunneling view. I think I always felt that way but weren't aware
of it.
Speaking about using SOAP messages as representation of a
resource state, it feels very awkward, in the extreme comparable
to using C++ to represent a web page.
Best regards,
Jacek Kopecky
Senior Architect, Systinet (formerly Idoox)
http://www.systinet.com/
On Tue, 5 Mar 2002, Williams, Stuart wrote:
> Hi Mark,
>
> [I know this looks a bit long, please bear with it up to the end of the
> second of the two following paragraphs before filing in the usual place -
> Thanks]
>
> So... I think we are yet again running up against the tensions between the
> 'tunneling' and 'chameleon' views of SOAP. I'm not sure that I believe that
> these two views can be accomodated within a single binding... but I have a
> thought with respect to the 'chameleon' view applied in the context of HTTP
> - which I'll try out here and see if I get buried under a tonne of rubble
> ;-)
>
> I think that it would be possible to regard a SOAP message simply as a
> content-type (application/soap+xml) along with a model for processing that
> content-type (the SOAP part 1 section 2 processing model). Move SOAP
> messages around in HTTP and you are doing HTTP.... no-binding required...
> you're doing HTTP and normal HTTP semantics apply - and the SOAP messages
> are in some sense (although I don't know what) resource representations.
> This gives you access to all the HTTP methods and (I think) requires no
> definition of a binding. Of course in the process SOAP ceases to be a
> protocol (in this view), it becomes a content-type and a processing model.
>
> In the other view, the 'tunneling' view, folks very much see SOAP as a
> protocol for exchanging messages and they want to be somewhat agnostic to
> what underlying protocol SOAP is bound to, much in the way that folks can be
> (mostly) agnostic about what the data-link technology IP is bound to. In
> this view folks conceive of themselves as exchanging messages (SOAP
> messages) between endpoints (which process messages) identified by URIs. In
> this 'view' the messages are not considered to be representations of
> resource state (representations of the state of an endpoint) - they are
> messages exchanged between entities bound to those endpoints. This view
> requires a binding, because it is *not* doing HTTP, its is doing Message
> Exchange over HTTP (tunneling).
>
> These two views are at odds because the 'chameleon' view seeks to expose
> HTTP as fully as possible and in the limit SOAP/HTTP is HTTP (full-richness)
> whereas the 'tunneling' view seeks to abstract away from or 'hide' HTTP and
> avoid exposing details of the underlying protocol to the thing (application
> entity) using SOAP.
>
> So we have two communities (at least) pulling toward these different
> extremes.
>
> I think that one reasonable viewpoint is that one can 'do' HTTP and
> simply(?) use SOAP for the content-type of the of an HTTP request/response
> entity body. This *is* HTTP, no binding required.
>
> However, in the Messaging/Tunneling view you do need a binding to establish
> how messages are exchanged between messaging endpoints. Of course you then
> need to establish the (binding independent) semantics of your messaging
> system (what messaging operations does it support and what are their
> semantics) - and an account that describes how the semantics of message
> transfer are accomplished as a pattern of resource state manipulations. eg.
> these resources represent intermediary-points and end-points in a messaging
> system, and that the effects of HTTP are to transfer messages that are
> either immediately processed yielding an immediate result (200), or that are
> accepted as subordinates (201) (an entry in a queue at the endpoint).
>
> I have a concern that we may be trying to align messaging semantics and HTTP
> semantics so tightly that ultimately we fail to define a messaging system
> and all we end up with is SOAP as a content-type for HTTP.
>
> More comments in line below.
>
> Regards
>
> Stuart
>
> > -----Original Message-----
> > From: Mark Baker [mailto:distobj@acm.org]
> > Sent: 04 March 2002 19:42
> > To: skw@hplb.hpl.hp.com
> > Cc: xml-dist-app@w3.org
> > Subject: Re: When is a Fault a Fault?
> >
> >
> > > > Ah, didn't see that. If we go with this though, it should also hold
> > > > that a Fault is a Fault if it's over 4xx or 5xx.
> > >
> > > Not sure how may of the conditions that give rise to:
> > >
> > > 10.4.1 400 Bad Request .........................................65
> > > 10.4.2 401 Unauthorized ........................................66
> > > 10.4.3 402 Payment Required ....................................66
> > > 10.4.4 403 Forbidden ...........................................66
> > > 10.4.5 404 Not Found ...........................................66
> > > 10.4.6 405 Method Not Allowed ..................................66
> > > 10.4.7 406 Not Acceptable ......................................67
> > > 10.4.8 407 Proxy Authentication Required .......................67
> > > 10.4.9 408 Request Timeout .....................................67
> > > 10.4.10 409 Conflict ............................................67
> > > 10.4.11 410 Gone ................................................68
> > > 10.4.12 411 Length Required .....................................68
> > > 10.4.13 412 Precondition Failed .................................68
> > > 10.4.14 413 Request Entity Too Large ............................69
> > > 10.4.15 414 Request-URI Too Long ................................69
> > > 10.4.16 415 Unsupported Media Type ..............................69
> > > 10.4.17 416 Requested Range Not Satisfiable .....................69
> > > 10.4.18 417 Expectation Failed ..................................70
> > >
> > > result in a request message being delivered to the SOAP node at the HTTP
> > > origin server or which are (could be/should be) handled directly by
> HTTP,
> > > and effectively return an 'empty' response (hence no fault bearing SOAP
> > > envelope).
> >
> > For sure, and I'd rather not have to enumerate these. That's why I
> > think it's easiest to use broad strokes and say that *if* a response
> > includes a body *and* uses any 4xx or 5xx response code, then it is a
> > fault ...
>
> So wrt 4xx status codes, 2616 states:
>
> <quote>
> Except when responding to a HEAD request,
> the server SHOULD include an entity containing an explanation of the
> error situation, and whether it is a temporary or permanent
> condition. These status codes are applicable to any request method.
> User agents SHOULD display any included entity to the user.
> </quote>
>
> I think that there is a mismatch of expectations here if the entity body is
> a SOAP fault ;-)
>
> > > The only place that "faultHint" is currently spoken about is with
> respect to
> > > the receipt of an HTTP POST response message by the requesting SOAP
> node.
> > > The last sentence is about mirroring something similar so that the SOAP
> > > processor can inform the binding that it regards the outbound message as
> > > being a fault message and that the binding should mark it appropriately
> (ie
> > > status code 500).
> >
> > Ok. The phrase "SOAP processor can inform the binding" was confusing
> > me, but there's enough context to interpret it there. I don't
> > personally see "the binding" as being a different piece of software.
>
> Ok... but we are talking about the separate specification of SOAP processors
> and SOAP bindings much in the way that we speak separately of IP and IP over
> X.25 or IP over 802.3 or IP over serial-lines... we end up needing the
> abstraction for descriptive purposes even if the implementation ends up as
> one homogenised chuck of software with very different internal structure.
>
> > > > Which mechanism are you suggesting be authoritative?
> > >
> > > >From the POV of processing the SOAP message I'd like to regard the SOAP
> > > message as authoritative. From the POV of HTTP infrastructure, proxies,
> > > caches, routers..., certainly those that can't usefully peek inside the
> SOAP
> > > message then really all they have to go on is the status code.
> > >
> > > This is probably one of those places where we should properly us a MUST
> in
> > > the HTTP binding spec, to say that the generator of a SOAP message MUST
> > > ensure the appropriate status code is used (and go on to say what the
> > > appropriate status code is). The defendable interop concern is the
> sustained
> > > correct operation of existing infrastructure... and if you don't do as
> the
> > > MUST say's then you are non-compliant with the binding spec.
> >
> > I agree that there are different POVs, and that MUST is the right
> > conformance level here, but that still doesn't say what the
> > authoritative determinant of a fault is.
>
> Well, it would say that one party is non-compliant... ie is broken. They are
> in error. If you proceed at all, proceed with caution. Maybe throw your
> hands up in horror and refuse to play because you have received something
> invalid... as broken as badly formed XML.
>
> One could produce a ruling one way or the other for these non-conformant
> cases, but which way to make the rule is open to debate.
>
> > > > I would be uncomfortable with using anything other than the
> success/fail mechanism
> > > > of the underlying protocol, where present. And where it's not
> present,
> > > > I don't think it matters much how it's determined, as long as it's
> > > > standardized in the binding.
> > > >
> > > > Another option is including some information within the envelope to
> > > > indicate the intent, but that feels uncomfortable to me. Not sure
> > > > why exactly, but I'll think more about it.
> > >
> > > Basically, I think your concern is due to there being two (or more)
> > > mechanisms to signify the same information and in those cases where
> there is
> > > inconsistency, do you resolve in favour of what the message says of
> itself
> > > or status information from the underlying protocol. I think we should
> > > probably have MUSTs that require consistency, such that the generation
> of
> > > something inconsistent is regarded as non-conforming.
> >
> > That's definitely *a* concern, and is why I asked which was the
> > authoritative souce. But it's not the concern I was talking about.
> > I think my response to Jacek included some thoughts about that.
> >
> > MB
> > --
> > Mark Baker, Chief Science Officer, Planetfred, Inc.
> > Ottawa, Ontario, CANADA. mbaker@planetfred.com
> > http://www.markbaker.ca http://www.planetfred.com
> >
>
> Stuart
>
Received on Tuesday, 5 March 2002 10:30:33 UTC