Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторный практикум по веб-сервисам.doc
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
1.71 Mб
Скачать

4.2.2Основные элементы языка wsdl

К основным элементам языка WSDL относятся:

Элемент

Определяет

Types

(типы данных)

Типы данных, используемые веб-сервисом, которые задаются с помощью XML-схемы.

Message

(сообщение)

Сообщения, используемые веб-сервисом. Они могут быть представлены как полный документ или как аргументы, отображаемые на вызов метода.

Operation

(операция)

Метод веб-сервиса, очередь сообщений или бизнес процесс, которые будут получать и обрабатывать сообщения.

PortType

(тип порта)

Набор операций, поддерживаемых данным типом порта.

Binding

(привязка)

Протоколы связи, используемы веб-сервисом. Для каждой привязки также задаются форматы данных, в которых будет передаваться сообщения, используемые операциях веб-сервиса.

Port

(порт)

Взаимосвязь между привязкой и сетевым адресом в формате протокола привязки, который определяет входную точку веб-сервиса.

Service

(сервис)

Набор связанных конечных узлов, заключающих все определения сервиса в один файл. Он содержит в себе определения портов и любые описания расширения. *

Таблица 4.2. Основные элементы языка WSDL.

Как и большинство XML-технологий WSDL – расширяемая технология. К примеру, привязка на SOAP, является таким расширением. Кроме нее также определены привязки на методы GET и POST протокола HTTP и трансляция сообщений в MIME формат.

В соответствии со своими задачами элементы WSDL можно разделить на три основные группы: типы данных, операции и привязки.

WSDL-документ состоит из набора определений, которые представлены основными элементами языка:

<?xml version="1.0" encoding="utf-8"?>

<wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">

<wsdl:documentation>

</wsdl:documentation>

<wsdl:types>

</wsdl:types>

<wsdl:message name="nmtoken">

</wsdl:message>

<wsdl:portType name="nmtoken">

<wsdl:operation name="nmtoken">

</wsdl:operation>

</wsdl:portType>

<wsdl:binding name="nmtoken" type="qname">

</wsdl:binding>

<wsdl:service name="nmtoken">

<wsdl:port name="nmtoken" binding="qname">

</wsdl:port>

</wsdl:service>

</wsdl:definitions>

Элемент documentation не относится к числу обязательных элементов, однако его использование желательно т.к. он содержит в себе информацию о веб-сервисе, предназначенную для человека:

<wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">

Веб-сервис бронирования мест в гостинице

</wsdl:documentation>

Этот элемент может быть использован как дочерний элемент для других элементов, например для добавления описаний к операциям веб-сервиса.

4.2.3Определение типов данных в wsdl

Для определения типов данных, используемых веб-сервисом, в WSDL-документах рекомендуется использовать механизм XML-схем. Следующий пример демонстрирует задание двух типов данных: «GetCatalogs» и «GetCatalogsResponse». Первый из них представляет собой пустой тип данных (ангалог void в C++), а второй – массив записей о каталогах интернет-магазина, содержащий поля Id и Name:

<wsdl:types>

<s:schema elementFormDefault="qualified"

targetNamespace="http://www.mephi.ru/order">

<s:element name="GetCatalogs">

<s:complexType />

</s:element>

<s:element name="GetCatalogsResponse">

<s:complexType>

<s:sequence>

<s:element minOccurs="0" maxOccurs="1" name="GetCatalogsResult" type="tns:ArrayOfCatalog" />

</s:sequence>

</s:complexType>

</s:element>

<s:complexType name="ArrayOfCatalog">

<s:sequence>

<s:element minOccurs="0" maxOccurs="unbounded" name="Catalog" nillable="true" type="tns:Catalog" />

</s:sequence>

</s:complexType>

<s:complexType name="Catalog">

<s:sequence>

<s:element minOccurs="1" maxOccurs="1" name="Id" type="s:int" />

<s:element minOccurs="0" maxOccurs="1" name="Name" type="s:string" />

</s:sequence>

</s:complexType>

</s:schema>

</wsdl:types>

Для использования этих типов данных необходимо задать сообщения веб-сервиса, в которых они будут задействованы:

<wsdl:message name="GetCatalogsSoapIn">

<wsdl:part name="parameters"

element="tns:GetCatalogs" />

</wsdl:message>

<wsdl:message name="GetCatalogsSoapOut">

<wsdl:part name="parameters"

element="tns:GetCatalogsResponse" />

</wsdl:message>

Таким образом, было задано два сообщения, которые могут быть использованы при определении операций веб-сервиса. Первое сообщение было определено как пустое, а содержание второго может быть, к примеру, следующим:

<?xml version="1.0" encoding="utf-8" ?>

<ArrayOfCatalog xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xmlns:xsd="http://www.w3.org/2001/XMLSchema"

xmlns="http://www.mephi.ru/order">

<Catalog>

<Id>1</Id>

<Name>Процессоры</Name>

</Catalog>

<Catalog>

<Id>2</Id>

<Name>Видеокарты</Name>

</Catalog>

</ArrayOfCatalog>