W3C home > Mailing lists > Public > www-ws-desc@w3.org > March 2002

Re: alternative format for WSDL that is SOAP compatible

From: Aleksander Slominski <aslom@cs.indiana.edu>
Date: Sun, 31 Mar 2002 19:40:23 -0500
Message-ID: <3CA7AC77.E77AC96E@cs.indiana.edu>
To: Jean-Jacques Moreau <moreau@crf.canon.fr>, www-ws-desc@w3.org
hi,

it is over a year since we had this problem proposed a solution.

however in our current thinking  interoperability and conformance to standards is the most important so
instead of trying to convince other people about merits of simple data model for WSDL we just decided
to support WSDL 1.1 XML format as transport format

internally this kind of model simple object model is still used and i think also that similar models
are used inside most of WSDL toolkits (such as WSDL4J) so having model directly serializable into SOAP
encoding would have some value but IMHO it is not enough new value ...

thanks,

alek

ps. also such XML as described below should be XSLT compatible with WSDL so the differences are more of
representation than of semantics but i did not think about those issues for long time ...


Jean-Jacques Moreau wrote:

> Alexsander,
>
> I you are still interested in this topic, you may want to repost your message on the public W3C Web
> Service Definition Working Group mailing list[1]. The WSD WG[2] was created ealier this year.
>
> Regards,
>
> Jean-Jacques Moreau.
>
> [1] mailto:www-ws-desc@w3.org
> [2] http://www.w3.org/2002/ws/desc/
>
> > hi,
> >
> > 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
> >
> >      Service
> >          String name
> >          Port[] ports
> >      Port
> >          String name
> >          Binding binding /*defining as bindings[] would allow port to have multiple bindings!*/
> >          PortType portType
> >      Binding
> >          String name
> >          OperationBinding operationBindings[]
> >      OperationBinding
> >          String name
> >          MessageBinding input
> >          MessageBinding output
> >          NamedMessageBinding faults[]
> >      NamedMessageBinding
> >          String name
> >          MessageBinding messageBinding
> >      MessageBinding
> >          String name
> >      PortType
> >          String name
> >          Operation operations[]
> >      Operation
> >          Message input
> >          String inputName
> >          Message output
> >          String outputName
> >          NamedMessage faults[]
> >      NamedMessage
> >          String name
> >          Message message
> >      Message
> >          Part parts[]
> >      Part
> >          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/>
> >    <name>StockQuoteService</name>
> >     <ports SOAP-ENC:arrayType="ws:Port[1]">
> >        <item xsi:type='ws:SoapPort'>
> >             <name>StockQuotePort</name>
> >             <location>http://example.com/stockquote>
> >             <binding xsi:type="ws:SoapBinding">
> >                 <name>StockQuoteSoapBinding</name>
> >                 <style>rpc</style>
> >                 <transport>http://schemas.xmlsoap.org/soap/http>
> >                 <operationBindings SOAP-ENC:arrayType="ws:OperationBinding[1]">
> >                    <item xsi:type='ws:SoapOperationBinding'>
> >                     <name>GetLastTradePrice</name>
> >                     <soapAction>http://example.com/GetLastTradePrice>
> >                     <input xsi:type="ws:SoapBinding>
> >                         <use>encoded</use>
> >                         <namespace>http://example.com/stockquote>
> >                         <encodingStyle>http://schemas.xmlsoap.org/soap/encoding/>
> >                    </input>
> >                     <output xsi:type="ws:SoapBinding>
> >                         <use>encoded</use>
> >                         <namespace>http://example.com/stockquote>
> >                         <encodingStyle>http://schemas.xmlsoap.org/soap/encoding/>
> >                    </input>
> >                   </item>
> >                 </operationBindings>
> >             </binding>
> >             <portType href="http://example.com/stockquote.wsdl#StockQuotePortType"/>
> >        </item>
> >     </ports>
> > </ws:Service>
> >
> > 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"/>
> >         </port>
> >     </service>
> >
> >    <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"/>
> >            <input>
> >                <soap:body use="encoded" namespace="http://example.com/stockquote"
> >                         encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
> >            </input>
> >            <output>
> >                <soap:body use="encoded" namespace="http://example.com/stockquote"
> >                         encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
> >            </output>
> >         </operation>>
> >     </binding>
> >
> > i welcome any comments on this approach.
> >
> > best regards,
> >
> > alek
> >
> > 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, 31 March 2002 19:40:23 GMT

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