W3C home > Mailing lists > Public > xml-dist-app@w3.org > October 2000

alternative format for WSDL that is SOAP compatible

From: Aleksander Slominski <aslom@cs.indiana.edu>
Date: Sun, 01 Oct 2000 10:29:23 -0500
Message-ID: <39D75853.A421891D@cs.indiana.edu>
To: "xml-dist-app@w3.org" <xml-dist-app@w3.org>

i would like to propose alternative format for WSDL that is SOAP compatible.
both representation would be equivalent and conversion should be fairly easy
(for example by using XSLT).

key benefit of using SOAP as encoding is to create standard mapping of WSDL
construction into objects (SOAP structs and arrays). it means that there is
no need to deal with DOM, namespaces or XSLT to process WSDL document
instance and SOAP can transparently use multi-ref serialization to express
equivalence of objects or even href to dynamically link remote to objects.

wsdl-soap is alternative format that is using very simple object model that allows
to serialize WSDL Service object with  SOAP encoding

         String name
         Port[] ports
         String name
         Binding binding /*defining as bindings[] would allow port to have multiple bindings!*/
         PortType portType
         String name
         OperationBinding operationBindings[]
         String name
         MessageBinding input
         MessageBinding output
         NamedMessageBinding faults[]
         String name
         MessageBinding messageBinding
         String name
         String name
         Operation operations[]
         Message input
         String inputName
         Message output
         String outputName
         NamedMessage faults[]
         String name
         Message message
         Part parts[]
         String name
         QName element
         QName type

i am using inheritance to express extensibility, for example it is possible
to define SOAP bindings as:

     SoapPort extends Port
         String location
     SoapBinding extends Binding
         String style
         String transport
     SoapOperationBinding extends OperationBinding
         String soapAction
     SoapMessageBinding extends MessageBinding
         String use
         String namespace
         String encodingStyle

rewriting Example 4 from WSDL specification in WSDL-SOAP alternative format
would give:

<ws:Service xmlns:ws="http://temp.uri/wsdl-soap/>
    <ports SOAP-ENC:arrayType="ws:Port[1]">
       <item xsi:type='ws:SoapPort'>
            <binding xsi:type="ws:SoapBinding">
                <operationBindings SOAP-ENC:arrayType="ws:OperationBinding[1]">
                   <item xsi:type='ws:SoapOperationBinding'>
                    <input xsi:type="ws:SoapBinding>
                    <output xsi:type="ws:SoapBinding>
            <portType href="http://example.com/stockquote.wsdl#StockQuotePortType"/>

and equivalent example in WSDL

    <service name="StockQuoteService">
        <documentation>My first service</documentation>
        <port name="StockQuotePort" binding="tns:StockQuoteBinding">
           <soap:address location="http://example.com/stockquote"/>

   <binding name="StockQuoteSoapBinding" type="tns:StockQuotePortType">
        <soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>
        <operation name="GetLastTradePrice">
           <soap:operation soapAction="http://example.com/GetLastTradePrice"/>
               <soap:body use="encoded" namespace="http://example.com/stockquote"
               <soap:body use="encoded" namespace="http://example.com/stockquote"

i welcome any comments on this approach.

best regards,


p.s. one possible extension of WSDL is to allow defining multiple bindings[]
in Port object. it will allow to have multiple protocols for port - very nice
way to express services capable of fail-over (also beneficial for performance)
Aleksander Slominski, LH 316, IU, http://www.extreme.indiana.edu/~aslom
As I look afar I see neither cherry Nor tinted leaves Just a modest hut
on the coast In the dusk of Autumn nightfall - Fujiwara no Teika (1162-1241)
Received on Sunday, 1 October 2000 11:28:24 UTC

This archive was generated by hypermail 2.3.1 : Tuesday, 6 January 2015 22:01:10 UTC