Re: A slice at a proposal for SOAP features/properties in WSDL

Glen,

First, we really like the direction this is going. This would 
enable us to neatly support SOAP 1.2. We think we could even go 
further and generalize this to other protocols, so essentially 
moving elements to the "wsdl:" namespace.

Some rough comments for now; this really needs to be 
consolidated, in particular the examples.

Youenn and Jean-Jacques.

------------------
Section 3

1) We should avoid harcoding the Web-Method feature. Web-Method 
is a feature with a single property called "webmeth:Method":
<portType name="MyService">
   <operation name="GetStockQuote">
     <soap:feature
        uri="http://www.w3.org/2002/06/soap/features/web-method/">
        <soap:property
          qname="webmeth:Method"
          xmlns:webmeth="http://www.w3.org/2002/06/soap/
                         features/web-method/">
           GET
        </soap:property>
     </soap:feature>
   </operation>
</portType>

2) We could list all possible values for Web-Method, not just 
GET. For example, borrowing the Relax syntax for simplicity (but 
we could equally well use XML Schema), we could write:
<soap:property
   qname="webmeth:Method"
   xmlns:webmeth="http://www.w3.org/2002/06/soap/
                  features/web-method/">
    <choice>
        <value>GET</value>
        <value>POST</value>
        <value>PUT</value>
        <value>DELETE</value>
    </choice>
</soap:property>

3) We could describe features and MEPs outside the port type, for 
clarity and reuse:
<feature name="basic-authentication"
          uri="http://www.crf.canon.fr/2002/05/
               features/basic-authentication">
   <property qname="auth:Username" xmlns:auth="..."/>
   <property qname="auth:Password" xmlns:auth="..."/>
</feature>

and:
<mep name="request-response"
      id="http://www.w3.org/2002/06/soap/mep/request-response">
   <property qname="reqres:Role" />
   <property qname="reqres:State" />
   <property qname="reqres:OutboundMessage" />
   <property qname="reqres:InboundMessage" />
   <property qname="reqres:ImmediateDestination" />
   <property qname="reqres:ImmediateSender" />
   <property qname="context:ExchangePatternName" />
   <property qname="context:FailureReason" />
</mep>

4) We could use a separate <protocol> element to describe each 
protocol once and for all, for clarity and in order to avoid 
repetition:
<protocol name="w3c-soap12-http11"
           id="http://www.w3.org/2002/06/soap/bindings/HTTP">
   <soap:mep ref="request-response" />
   <soap:mep ref="soap-response" />
   <soap:feature ref="web-method"/>
</protocol>

and then in the binding could simply reference the protocol element:
<binding>
    <soap:binding ref="w3c-soap12-http11"/>
</binding>

5) We could generalize the concept of features to other 
protocols, not just SOAP (and hence replace the prefix "soap:" by 
"wsdl:"):
<protocol name="ietf-http11"
           id="http://www.crf.canon.fr/2002/05/ietf/
               bindings/HTTP">
   <mep ref="request-response" />
   <feature ref="basic-authentication" />
   <feature ref="web-method" />
</protocol>

and also:
<protocol name="my-soap12-ftp"
           id="http://www.crf.canon.fr/2002/05/soap/
               bindings/FTP">
   <mep ref="request-response" />
   <feature ref="binary" />
   <feature ref="basic-authentication" />
</protocol>


Section 4

6) We could simply describe MEPs as other features:
<binding>
   <operation name="GetStockQuote">
     <soap:mep ref="soap-response"/>
   </operation>
</binding>

7) We could also describe Web-Method as other features:
<binding>
   <operation name="GetStockQuote">
     <soap:feature ref="web-method">
        <soap:property qname="webmeth:Method"
            xmlns:webmeth="http://www.w3.org/2002/06/
                           soap/features/web-method/">
            GET
        </soap:property>
     </soap:feature>
   </operation>
</binding>

8) We could rename the "transport" attribute to something more 
meaningfull:
<soap:binding uri="http://www.w3.org/2002/06/soap/bindings/HTTP/"/>


Section 6

9) Abstract features are realized through bindings or modules. We 
should indicate the feature that a given module is a realization of:
<module uri="http://www.crf.canon.fr/2002/05/
              modules/basic-authentication">
   <implements ref="http://www.crf.canon.fr/2002/05/
                    features/basic-authentication"/>
</module>

Received on Thursday, 26 September 2002 12:02:20 UTC