You are viewing a plain text version of this content. The canonical link for it is here.
Posted to soap-dev@xml.apache.org by Aleksander Slominski <as...@cs.indiana.edu> on 2000/10/01 07:42:48 UTC
alternative format for WSDL that is SOAP compatible
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</location>
<binding xsi:type="ws:SoapBinding">
<name>StockQuoteSoapBinding</name>
<style>rpc</style>
<transport>http://schemas.xmlsoap.org/soap/http</transport>
<operationBindings SOAP-ENC:arrayType="ws:OperationBinding[1]">
<item xsi:type='ws:SoapOperationBinding'>
<name>GetLastTradePrice</name>
<soapAction>http://example.com/GetLastTradePrice</soapAction>
<input xsi:type="ws:SoapBinding>
<use>encoded</use>
<namespace>http://example.com/stockquote</namespace>
<encodingStyle>http://schemas.xmlsoap.org/soap/encoding/</encodingStyle>
</input>
<output xsi:type="ws:SoapBinding>
<use>encoded</use>
<namespace>http://example.com/stockquote</namespace>
<encodingStyle>http://schemas.xmlsoap.org/soap/encoding/</encodingStyle>
</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)