Binding Element (Windows CE 5.0)
The <binding> element in a Web Services Description Language (WSDL) file does the following:
- Specifies the protocol details for operations defined in the <portType> element.
- For each operation, describes how to map the abstract content of its messages into a concrete format (for example, defines how the message looks on the wire).
Each <binding> element has name and type attributes.
- The name attribute provides a unique name for this binding.
- The type attribute identifies the port type that it binds. This is the same port type defined earlier in the <portType> element.
The following code example from the Calc.wsdl file shows the <binding> element for the Add operation:
<binding name='CalcSoapBinding' type='wsdlns:CalcSoapPort' >
<stk:binding preferredEncoding='UTF-8'/>
<soap:binding style='rpc' transport='https://schemas.xmlsoap.org/soap/http' />
...
<operation name='Add' >
<soap:operation soapAction='http://tempuri.org/action/Calc.Add' />
<input>
<soap:body use='encoded' namespace='http://tempuri.org/message/'
encodingStyle='https://schemas.xmlsoap.org/soap/encoding/' />
</input>
<output>
<soap:body use='encoded' namespace='http://tempuri.org/message/'
encodingStyle='https://schemas.xmlsoap.org/soap/encoding/' />
</output>
</operation>
...
</binding>
In the Calc.wsdl file, the <binding> element has two child elements: <soap:binding> and <operation>.
<soap:binding> Element
A <soap:binding> element has two attributes:
The style attribute, which indicates whether the operation is a remote procedure call (RPC) or a document-oriented operation.
If you do not specify the style attribute in the <operation> element, the default is the value of the style attribute specified in the <soap:binding> element.
The transport attribute, which specifies the type of binding to be used.
The following code example from the Calc.wsdl file shows this <soap:binding> element:
<soap:binding style='rpc' transport='https://schemas.xmlsoap.org/soap/http' />
In this example, the 'rpc' value specified for the style attribute indicates that the operation is an RPC-oriented operation instead of a document-oriented one.
Also, the value for the transport attribute specifies that this binding corresponds to the HTTP binding in the SOAP specification.
<operation> Element
There is one <operation> child element for each operation defined by the <portType> element. The same operation is also specified in the type attribute in the <binding> element.
An <operation> element and its child elements correlate with the corresponding elements in the <portType> element.
Because the <input> and <output> child elements of the <portType> element do not specify a name attribute, the corresponding child elements in the <binding> element also do not specify a name attribute.
In the previous WSDL fragment, the <operation> element identifies the Add operation. This element has the <soap: operation>, <input>, and <output> child elements.
<soap:operation> Element
The <soap:operation> child element provides information for the specific operation as a whole. In this element, you use the optional style attribute to identify the type of operation (document-oriented or RPC-oriented) and the soapAction attribute to identify the handler of this operation.
The following code example of the Calc.wsdl file shows the <soap:operation> element of the Add operation:
...
<operation name='Add' >
<soap:operation soapAction='http://tempuri.org/action/Calc.Add' />
...
In this example, the <soap:operation> element does not specify a style attribute. Hence, it uses the value of the style attribute specified in the <soap:binding> element as the default.
<input> and <output> Elements
The <input> and <output> child elements can have two child elements:
- <soap:header>
- <soap:body>
These child elements specify how the message parts of the operation's input and output appear inside the <Header> or <Body> elements of the SOAP <Envelope> element.
In the Calc.wsdl file, the <input> and <output> elements specify only the <soap:body> element. This indicates that all message parts of the input and output are to appear inside the SOAP body (inside the SOAP <Envelope> element).
...
<operation name='Add' >
...
<input>
<soap:body use='encoded' namespace='http://tempuri.org/message/'
encodingStyle='https://schemas.xmlsoap.org/soap/encoding/' />
</input>
<output>
<soap:body use='encoded' namespace='http://tempuri.org/message/'
encodingStyle='https://schemas.xmlsoap.org/soap/encoding/' />
</output>
</operation>
<soap:body> Element
For each input and output message, the <soap:body> element describes how various message parts appear inside the SOAP <Body> element.
In general, a <soap:body> element has four attributes:
The parts attribute, which identifies the part of the message to appear in the <soap:body>.
The use attribute, which indicates whether to encode parts of the message.
If the parts are encoded (
use="encoded"
), each part references an abstract data type set by the type attribute in the <part> child element of the <message> element.These abstract types produce a concrete message by applying encoding specified in the encodingStyle attribute.
The encodingStyle attribute, which specifies the type of encoding to perform on various parts of the message.
The namespace attribute, which provides namespace for the wrapper element that wraps the parameters in an RPC style operation.
If the operation style is RPC, each part is a parameter or a return value and appears inside a wrapper element within the SOAP <Body> element.
The wrapper element is named identically to the operation name and its namespace is the value of the namespace attribute.
In the Calc.wsdl file, the style attribute of the <soap:binding> element is "rpc." This indicates that each part in the message appears within an RPC wrapper element in the body.
See Also
About the Calc.wsdl File | <types> Element | <message> Element | <service> Element | <portType> Element
Send Feedback on this topic to the authors