W3C home > Mailing lists > Public > xml-dist-app@w3.org > July 2002

RE: FW: LC Comments: Web Method Feature (really Features optional )

From: Williams, Stuart <skw@hplb.hpl.hp.com>
Date: Tue, 23 Jul 2002 14:38:23 +0100
Message-ID: <5E13A1874524D411A876006008CD059F04A06F81@0-mail-1.hpl.hp.com>
To: "'noah_mendelsohn@us.ibm.com'" <noah_mendelsohn@us.ibm.com>
Cc: xml-dist-app@w3.org

Hi Noah,

> -----Original Message-----
> From: noah_mendelsohn@us.ibm.com [mailto:noah_mendelsohn@us.ibm.com]
> Sent: 23 July 2002 03:10
> To: xml-dist-app@w3.org
> Subject: Re: FW: LC Comments: Web Method Feature (really Features
> optional)
> 
> (I've been out for a week.  If this response is no longer pertinent,
> apologies in advance.)
> 
> Long ago in this thread, Jacek Kopecy wrote:
> 
> >>  I agree with Stuart though that once we call
> >> something a feature, it's not mandatory, it
> >> MAY be used to gain something.
> 
> I'm afraid I somewhat disagree, and I think the disagreement is indeed a
> central issue for this thread.
> 
> Yes, features are optional in the sense that there is no one feature
> required of all SOAP implementations, of all SOAP binding specifications
> etc.  However, it is absolutely the case that use of certain features can
> be mandatory per the specification for a particular binding.

I think we need some more precision here with respect to words like
'mandatory'. I think we need to make a distinction between *provision* and
*use*.

IMO it is coherent for a binding specification to mandated the *provision*
of a feature - I have no problem with that.

However, it is not coherent with the framework we have defined for a binding
to mandate the *use* of a feature. In a sense that introduces something akin
to mustUnderstand for features - and we don't have the concept of a
mustUnderstand feature in our binding framework - ie. if the binding
provides a feature that is tagged mustUnderstand and you don't understand
it... then you can't use that binding. There would be some appealing
symmetry with SOAP headers, but that is not how we framework is today.

> Most
> obviously, use of the Request/Response feature was mandatory in earlier
> versions of the SOAP HTTP binding.

It was mandatory that an HTTP binding *provide* that feature, yes. Indeed,
the binding specification still states:

    7.3 Supported Message Exchange Patterns

    An implementation of the SOAP HTTP Binding MUST support the following
message exchange patterns (MEPs):

    "http://www.w3.org/2002/06/soap/mep/request-response/" (see 6.2
Request-Response Message Exchange Pattern) 

    "http://www.w3.org/2002/06/soap/mep/soap-response/" (see 6.3 SOAP
Response Message Exchange Pattern) 


So, both MEPs are each 'as mandatory' as the Web Method feature and no-one
has yet suggested that the use of both is mandatory.

> You didn't have the option to use it,
> you had to use it.

No... you didn't have to *use* it... but it was the only thing available to
*use*.

> Nothing broken there.

Ok... but our emphasis is different...

> Now we have the Web Method
> feature.  I can see that there might be reason to debate its design
(though
> I would have much preferred that debate happen before last call).

On the whole I have no problem with the Web Method feature. Binding
specifications can mandate its *provision*, users of bindings can make *use*
of it if they choose to. This discussion (or at least LC#227) is not about
the description of the Web Method feature - it about the fact that the first
row in table 15 of part 2 *implicit* makes the *use* of the feature
mandatory because the behaviour of the HTTP binding, as specified, is
currently undefined if the feature is not used (ie. webmeth:method if is
absent from the message exchange context).

> I do not
> agree that the problem is or can be lack of optionality.  It is absolutely
> coherent for the HTTP binding specification to say:  to use this binding,
> an application MUST make use of the following feature(s).  Some of those
> might be MEPs, some might be other features.

So... this is the point of disagreement. To me this strikes at the whole
purpose of doing the framework. IMO the point of the framework was to enable
'applications' to be agnostic about the underlying protocols to which they
were bound and to present the (potentially diverse) functionality of those
protocols as features. Applications are then capable of selecting bindings
that support a range of features that the application 'understands' and
requires to use. The step of allowing a binding to mandate the *use* of a
feature forces us (globally) to have to recognise the binding (rather than
individual features) because the binding may impose further constraints not
implicit in the feature definition, and now we have just 'broken' the
purpose of the framework.

Now... I could accept an extension of our framework that allowed for the
concept of mustUnderstand features, so that features could be tagged as
mustUnderstand and applications would avoid using bindings that provided
mustUnderstand features that they did not understand.

If our framework admitted such a concept then the debate would be about
which of Request-Response MEP, SOAP-Response MEP and Web Method feature
should be labelled as mustUnderstand. Personnally, I can see no reason why
any of them should be so labelled. In fact... it perhaps goes beyond simply
mustUnderstand to mustUse (although the latter might be an implicit part of
understanding). I think to impose such a constraint one would have to give a
robust account of the benefits and losses that arise (see minimal constraint
[1,2]).

> Why name it as a feature if in that particular situation it's not
optional?

Again precision over provision and use. Mandatory provision is fine (by me)
- benefit is that it supports the chameleon style of use.

> Because it correctly describes an interface that may well prove to be
> common across other bindings.  For example, some other binding to HTTP
> might support the same feature.  A binding to HTTPS might support the
> feature.  Even a binding to some non-HTTP protocol that supports REST
> semantics would probably use the feature.

I have no argument against the utility of the Web Method feature.

> As has been previously noted, the reason it's the Web Method feature and
> not something else is that it anticipates other REST methods such as
DELETE
> (which would presumably, by the way, use the same MEP as GET).

And that's fine too... but an application that simply understand one or
other of the two supported MEPs should (IMO) be able to do so without
*having* to understand and *use* the Web Method feature. Thet may choose to
do so... they should not be compelled to do so.

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

Best regards

Stuart
[1] http://www.w3.org/People/Berners-Lee/Weaving/glossary.html
[2] http://www.w3.org/Talks/1999/0211-Sloan-tbl/slide8-0.html
Received on Tuesday, 23 July 2002 09:38:54 GMT

This archive was generated by hypermail 2.2.0+W3C-0.50 : Monday, 7 December 2009 10:59:10 GMT