завел мой врач издалека.
410013796724260
• Webmoney
R335386147728
Z369087728698
Язык описания web-сервисов WSDLЯзык описания веб-сервисов WSDL (Web Services Description Language) основан на языке XML. В июне 2007 года была утверждена WSDL 2.0 в качестве стандарта W3C (World Wide Web Consortium), но несмотря на это версия WSDL 1.1 остается широко используемой формой описания Web-сервисов SOAP. WSDL 1.1 имеет определенные недостатки, включающие чрезмерно сложную структуру. Это серьезно затрудняет его чтение для начинающих. На рисунке, позаимствованному из Wikipedia, представлены структуры WSDL для версий 1.1 и 2.0. ![]() WSDL 1.1В WSDL документах версии 1.1 используется корневая секция с названием <wsdl:definitions>, включающая один «пассивный» дочерний элемент (ссылка на отдельные документы WSDL 1.1) и пять «активных» дочерних элементов, составляющие описание сервиса :
Первым дочерним элементом секции <wsdl:definitions> для документирования может быть использован не представленный в таблице элемент <wsdl:documentation>. Данный тег может быть также использован также для документирования любого из элементов описания сервиса. Для полного описания сервиса требуется один элемент каждого из представленных в таблице типов, за исключением <wsdl:import>. Но не обязательно, чтобы все они находились в одном и том же документе. Элемент <wsdl:import> позволяет собирать полное описание WSDL из нескольких документов. Три элемента описания (<wsdl:types>, <wsdl:message> и <wsdl:portType>) формируют полное описание интерфейса сервиса. Элементы <wsdl:binding> и <wsdl:service> ориентированы на реализацию элементов сервиса. Пример WSDL 1.1На странице описания клиентов SOAP были использованы действующие WEB-сервисы получения значений кодов ZIP города Нью-Йорк и информации сервиса BELAVIA. В качестве примера описания WSDL рассмотрим WEB сервис BELAVIA. Следующий листинг представляет структуру сервиса wsdl : Структура WSDL сервиса BELAVIAОписания сервиса WSDL представлено одним документом и не включает секцию <wsdl:import>. В корневой секции <wsdl:definitions> определяются именованные пространства, используемые при описании элементов документа. <wsdl:definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:tns="http://webservices.belavia.by/" xmlns:s="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" targetNamespace="http://webservices.belavia.by/"> <wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"> <img src="webservice.jpg" /> </wsdl:documentation> <wsdl:types> <s:schema> . . . <s:element name="GetAirportsList"> <s:complexType> <s:sequence> <s:element minOccurs="0" maxOccurs="1" name="Language" type="s:string"/> </s:sequence> </s:complexType> </s:element> <s:element name="GetAirportsListResponse"> <s:complexType> <s:sequence> <s:element minOccurs="0" maxOccurs="1" name="GetAirportsListResult" type="tns:AirportsResponse"/> </s:sequence> </s:complexType> </s:element> <s:complexType name="AirportsResponse"> <s:sequence> <s:element minOccurs="0" maxOccurs="unbounded" name="Airport" type="tns:Airport"/> </s:sequence> </s:complexType> <s:complexType name="Airport"> <s:attribute name="IATA" type="s:string"/> <s:attribute name="Name" type="s:string"/> </s:complexType> </s:schema> </wsdl:types> <wsdl:message name="GetTimeTableSoapIn"> <wsdl:part name="parameters" element="tns:GetTimeTable"/> </wsdl:message> <wsdl:message name="GetTimeTableSoapOut"> <wsdl:part name="parameters" element="tns:GetTimeTableResponse"/> </wsdl:message> <wsdl:message name="GetAirportsListSoapIn"> <wsdl:part name="parameters" element="tns:GetAirportsList"/> </wsdl:message> <wsdl:message name="GetAirportsListSoapOut"> <wsdl:part name="parameters" element="tns:GetAirportsListResponse"/> </wsdl:message> <wsdl:portType name="OnlineTimeTableSoap"> <wsdl:operation name="GetTimeTable"> <wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"> Возвращает список рейсов с информацией о прилёте / вылете и состоянии рейса. Входные параметры: . . . </wsdl:documentation> <wsdl:input message="tns:GetTimeTableSoapIn"/> <wsdl:output message="tns:GetTimeTableSoapOut"/> </wsdl:operation> <wsdl:operation name="GetAirportsList"> <wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"> Возвращает список аэропортов, где есть информация о выполняемых рейсах. Входные параметры: . . . </wsdl:documentation> <wsdl:input message="tns:GetAirportsListSoapIn"/> <wsdl:output message="tns:GetAirportsListSoapOut"/> </wsdl:operation> </wsdl:portType> <wsdl:binding name="OnlineTimeTableSoap" type="tns:OnlineTimeTableSoap"> <soap:binding transport="http://schemas.xmlsoap.org/soap/http"/> <wsdl:operation name="GetTimeTable"> <soap:operation soapAction="http://webservices.belavia.by/GetTimeTable" style="document"/> <wsdl:input> <soap:body use="literal"/> </wsdl:input> <wsdl:output> <soap:body use="literal"/> </wsdl:output> </wsdl:operation> <wsdl:operation name="GetAirportsList"> <soap:operation soapAction="http://webservices.belavia.by/GetAirportsList" style="document"/> <wsdl:input> <soap:body use="literal"/> </wsdl:input> <wsdl:output> <soap:body use="literal"/> </wsdl:output> </wsdl:operation> </wsdl:binding> <wsdl:binding name="OnlineTimeTableSoap12" type="tns:OnlineTimeTableSoap"> <soap12:binding transport="http://schemas.xmlsoap.org/soap/http"/> <wsdl:operation name="GetTimeTable"> <soap12:operation soapAction="http://webservices.belavia.by/GetTimeTable" style="document"/> <wsdl:input> <soap12:body use="literal"/> </wsdl:input> <wsdl:output> <soap12:body use="literal"/> </wsdl:output> </wsdl:operation> <wsdl:operation name="GetAirportsList"> <soap12:operation soapAction="http://webservices.belavia.by/GetAirportsList" style="document"/> <wsdl:input> <soap12:body use="literal"/> </wsdl:input> <wsdl:output> <soap12:body use="literal"/> </wsdl:output> </wsdl:operation> </wsdl:binding> <wsdl:service name="OnlineTimeTable"> <wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"> <img src="webservice.jpg" /> </wsdl:documentation> <wsdl:port name="OnlineTimeTableSoap" binding="tns:OnlineTimeTableSoap"> <soap:address location="http://86.57.245.235/TimeTable/Service.asmx"/> </wsdl:port> <wsdl:port name="OnlineTimeTableSoap12" binding="tns:OnlineTimeTableSoap12"> <soap12:address location="http://86.57.245.235/TimeTable/Service.asmx"/> </wsdl:port> </wsdl:service> </wsdl:definitions> Секция <wsdl:types> включает используемые для сообщений определения XML в виде одного или нескольких элементов <s:schema>. WSDL допускает альтернативы XML-схеме для этих определений, но большинство стеков поддерживает только XML-схемы. При необходимости элементы <s:schema> могут включать <s:import> или <s:include> для вставки внешних по отношению к WSDL других схем. В листинге приведен усеченный перечень элементов секции <wsdl:types>. Компонентам документа WSDL присваиваются отдельные имена с использованием атрибута name. При использовании в корневом элементе документа <wsdl:definitions> атрибута targetNamespace, имена этих компонентов определены в этом пространстве имен. Это означает, что при определении имени достаточно присвоить простую, или «локальную», часть имени, но ссылки на этот компонент должны уточнять имя с помощью префикса пространства имен или с помощью пространства имен по умолчанию. Представленные элементами <wsdl:message> сообщения расположены в ядре описаний сервисов WSDL. Элементы <wsdl:message> являются описаниями XML-данных, передаваемых между клиентом и поставщиком услуг. Каждый элемент <wsdl:message> содержит, как правило, один дочерний элемент <wsdl:part>, для которого требуется собственный уникальный в пределах <wsdl:message> атрибут name и один из атрибутов element или type, ссылающийся на определение схемы XML-данных. Элементы <wsdl:portType> определяют абстрактный интерфейс сервиса в части сообщений, передаваемых сервису и принимаемых от него, и содержат любое количество дочерних элементов <wsdl:operation>. Дочерний элемент <wsdl:operation> имеет собственный атрибут name и включает один или несколько дочерних элементов с описанием сообщения. В зависимости от способа использования могут быть включены следующие типы дочерних элементов :
WSDL 1.1 определяет две модели взаимодействия клиента и поставщика услуг, представленных различными последовательностями дочерних элементов <wsdl:input> и <wsdl:output> : операций типа запрос-ответ, где за <wsdl:input> следует <wsdl:output>, и односторонние операции, содержащие только <wsdl:input>. В случае операций типа запрос-ответ за элементами <wsdl:input> и <wsdl:output> может следовать любое количество элементов <wsdl:fault>. Каждый элемент <wsdl:input>, <wsdl:output> или <wsdl:fault> включает ссылку на описание сообщения в виде обязательного атрибута message. В данной ссылке уточняется пространство имен добавлением префикса. Если рассмотреть элемент <wsdl:portType> с точки зрения Java как определение интерфейса, то элементы <wsdl:operation> будут эквивалентны методам, включающим в качестве параметров элементы <wsdl:input>; элементы <wsdl:output> будут определять результаты выполнения методов, а <wsdl:fault> соответствовать исключениям. Этот подход используется при генерировании кода Java из WSDL. Дочерние элементы <wsdl:binding> содержат информацию о способе реализации. Элементы из пространства имен WSDL соответствуют элементам <wsdl:portType> и должны использовать то же значение name – а не ссылки с уточнением пространства имен, как в случае <wsdl:portType>. Та же связь по имени относится и к дочерним элементам <wsdl:input>/<wsdl:output>/<wsdl:fault> элементов <wsdl:operation>. Несмотря на повторное использование одних и тех же имен элементов, содержание этих элементов существенно отличается для дочерних элементов <wsdl:binding> относительно элементов <wsdl:portType>. Расширения, определяемые WSDL, вступают в игру в <wsdl:binding>. Дочерний элемент <soap:binding> используется в определении сервиса SOAP и включает обязательный атрибут transport для определения вида транспорта, используемого привязкой. Необязательный атрибут style позволяет выбирать способ rpc или document для представления XML-данных. Наиболее распространенное значение document соответствует сообщениям с использованием элементов определения схемы, а не типа. Элемент <wsdl:binding> включает дочерние элементы <wsdl:operation> внутри которого
WSDL 2.0Описание документа WSDL 2.0 на странице не приводится, но желающие могут ознакомится с англо-язычной версией здесь. |