Здесь описывается привязка конкретных операций (Web-методов) к конкретному протоколу и стилю вызова (для SOAP это может быть document- или RPC-стиль). Так как сам WSDL является абстрактным форматом, он не имеет средств для определения зависимых от протокола параметров, его синтаксис позволяет вставлять в определенные места фрагмента binding элементы расширения для конкретного протокола. Вот фрагмент секции binding, взятый из спецификации WSDL:
<wsdl:binding name="nmtoken" type="qname"> * <-- extensibility element (1) --> * <wsdl:operation name="nmtoken"> * <-- extensibility element (2) --> * <wsdl:input name="nmtoken"? >? <-- extensibility element (3) --> </wsdl:input> <wsdl:output name="nmtoken"? >? <-- extensibility element (4) --> * </wsdl:output> <wsdl:fault name="nmtoken"> * <-- extensibility element (5) --> * </wsdl:fault> </wsdl:operation></wsdl:binding> |
Как видите, элементы расширения могут появляться во всех частях связывания, определяя поведение всего связывания (1), конкретной операции (2), входных (3), выходных (4) и ошибочных (5) параметров.
Рассмотрим для примера элементы расширения для протокола SOAP.
|
|
<soap:binding style="rpc|document" transport="uri"> – элемент расширения связывания, который определяет стиль SOAP-сообщения и транспорт. Расширение является обязательным.
<soap:operation soapAction="uri"? style="rpc|document"?>? – элемент расширения операции, который определяет элемент заголовка soapAction и переопределяет стиль для конкретного сообщения. Необязательное расширение.
4. и 5. <soap:body parts="nmtokens"? use="literal|encoded"? encodingStyle="uri-list"? namespace="uri"?> – элемент расширения параметров.
В нашем случае эта часть WSDL-файла будет выглядеть так:
<wsdl:binding name="SXSBinding" type="tns:SXSPort"> <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" /> </wsdl:binding> |
Здесь определяется стиль SOAP-сообщения document и транспорт http. Операции, как видите, отсутствуют.