Язык описания веб-служб
Расширение имени файла |
.wsdl |
---|---|
Тип интернет-СМИ |
приложение/wsdl+xml |
Разработано | Консорциум Всемирной паутины |
Содержится | XML |
Стандартный | 2.0 Рекомендация |
Язык описания веб-служб dəl / ) — это веб - (WSDL/ˈwɪ z язык описания интерфейса на , XML основе который используется для описания функций, предлагаемых службой . [ нужна ссылка ] Аббревиатура также используется для любого конкретного WSDL-описания веб-службы (также называемого файлом WSDL ), которое предоставляет машиночитаемое описание того, как можно вызвать службу, какие параметры она ожидает и какие структуры данных она возвращает. . Следовательно, его цель примерно аналогична назначению сигнатуры типа в языке программирования.
Последней версией WSDL, которая стала рекомендацией W3C в 2007 году, является WSDL 2.0. Значение аббревиатуры изменилось по сравнению с версией 1.1, где буква «D» обозначала «Определение».
Описание
[ редактировать ]WSDL описывает службы как наборы сетевых конечных точек или портов . Для этой цели спецификация WSDL предоставляет XML формат для документов. Абстрактные определения портов и сообщений отделены от их конкретного использования или экземпляра, что позволяет повторно использовать эти определения. Порт определяется путем связывания сетевого адреса с многократно используемой привязкой, а набор портов определяет службу. Сообщения представляют собой абстрактные описания данных, которыми обмениваются, а типы портов представляют собой абстрактные коллекции поддерживаемых операций. Спецификации конкретного протокола и формата данных для конкретного типа порта представляют собой привязку многократного использования, при которой операции и сообщения затем привязываются к конкретному сетевому протоколу и формату сообщений. Таким образом, WSDL описывает общедоступный интерфейс веб-службы.
WSDL часто используется в сочетании с SOAP и схемой XML для предоставления веб-сервисов через Интернет . Клиентская программа, подключающаяся к веб-службе, может прочитать файл WSDL, чтобы определить, какие операции доступны на сервере. Любые используемые специальные типы данных встроены в файл WSDL в форме схемы XML. Затем клиент может использовать SOAP для фактического вызова одной из операций, перечисленных в файле WSDL, используя, например, XML через HTTP .
Текущая версия спецификации — 2.0; версия 1.1 не была одобрена W3C , но версия 2.0 является рекомендацией W3C . [1] WSDL 1.2 был переименован в WSDL 2.0 из-за его существенных отличий от WSDL 1.1. Принимая привязку ко всем методам HTTP-запросов (а не только к GET и POST, как в версии 1.1), спецификация WSDL 2.0 обеспечивает лучшую поддержку RESTful веб-служб и ее гораздо проще реализовать. [2] [3] Однако поддержка этой спецификации по-прежнему недостаточна в комплектах разработки программного обеспечения для веб-служб, которые часто предлагают инструменты только для WSDL 1.1. [ нужно обновить ] [ нужна ссылка ] Например, версия 2.0 языка выполнения бизнес-процессов (BPEL) поддерживает только WSDL 1.1.
Термин WSDL 1.1 | Термин WSDL 2.0 | Описание |
---|---|---|
Услуга | Услуга | Содержит набор системных функций, доступных через веб-протоколы. |
Порт | Конечная точка | Определяет адрес или точку подключения к веб-службе. Обычно он представлен простой строкой URL-адреса HTTP . |
Связывание | Связывание | Указывает интерфейс и определяет SOAP стиль привязки ( RPC /Document) и транспорт ( SOAP протокол ). Раздел привязки также определяет операции. |
Тип порта | Интерфейс | Определяет веб-службу, операции, которые можно выполнять, и сообщения, используемые для выполнения операции. |
Операция | Операция | Определяет действия SOAP и способ кодирования сообщения, например «буквальное». Операция похожа на вызов метода или функции в традиционном языке программирования. |
Сообщение | — | Обычно сообщение соответствует операции. Сообщение содержит информацию, необходимую для выполнения операции. Каждое сообщение состоит из одной или нескольких логических частей. Каждая часть связана с атрибутом типа сообщения. Атрибут имени сообщения обеспечивает уникальное имя среди всех сообщений. Атрибут имени части обеспечивает уникальное имя среди всех частей включающего сообщения. Части представляют собой описание логического содержания сообщения. В привязке RPC привязка может ссылаться на имя части, чтобы указать информацию о этой части, специфичную для привязки. Часть может представлять параметр в сообщении; привязки определяют фактическое значение части. Сообщения были удалены из WSDL 2.0, в котором типы XML- схем для определения тел входных, выходных данных и ошибок упоминаются просто и напрямую. |
Типы | Типы | Описывает данные. язык схемы XML (также известный как XSD Для этой цели используется ). |
Пример файла WSDL
[ редактировать ]<?xml version="1.0" encoding="UTF-8"?>
<description xmlns="http://www.w3.org/ns/wsdl"
xmlns:tns="http://www.tmsws.com/wsdl20sample"
xmlns:whttp="http://schemas.xmlsoap.org/wsdl/http/"
xmlns:wsoap="http://schemas.xmlsoap.org/wsdl/soap/"
targetNamespace="http://www.tmsws.com/wsdl20sample">
<documentation>
This is a sample WSDL 2.0 document.
</documentation>
<!-- Abstract type -->
<types>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns="http://www.tmsws.com/wsdl20sample"
targetNamespace="http://www.example.com/wsdl20sample">
<xs:element name="request"> ... </xs:element>
<xs:element name="response"> ... </xs:element>
</xs:schema>
</types>
<!-- Abstract interfaces -->
<interface name="Interface1">
<fault name="Error1" element="tns:response"/>
<operation name="Get" pattern="http://www.w3.org/ns/wsdl/in-out">
<input messageLabel="In" element="tns:request"/>
<output messageLabel="Out" element="tns:response"/>
</operation>
</interface>
<!-- Concrete Binding Over HTTP -->
<binding name="HttpBinding" interface="tns:Interface1"
type="http://www.w3.org/ns/wsdl/http">
<operation ref="tns:Get" whttp:method="GET"/>
</binding>
<!-- Concrete Binding with SOAP-->
<binding name="SoapBinding" interface="tns:Interface1"
type="http://www.w3.org/ns/wsdl/soap"
wsoap:protocol="http://www.w3.org/2003/05/soap/bindings/HTTP/"
wsoap:mepDefault="http://www.w3.org/2003/05/soap/mep/request-response">
<operation ref="tns:Get" />
</binding>
<!-- Web Service offering endpoints for both bindings-->
<service name="Service1" interface="tns:Interface1">
<endpoint name="HttpEndpoint"
binding="tns:HttpBinding"
address="http://www.example.com/rest/"/>
<endpoint name="SoapEndpoint"
binding="tns:SoapBinding"
address="http://www.example.com/soap/"/>
</service>
</description>
История
[ редактировать ]WSDL 1.0 (сентябрь 2000 г.) был разработан IBM , Microsoft и Ariba для описания веб-служб для их набора инструментов SOAP. Он был создан путем объединения двух языков описания служб: NASSL (язык спецификации служб сетевых приложений) от IBM и SDL (язык описания служб) от Microsoft.
WSDL 1.1, опубликованный в марте 2001 года, представляет собой формализацию WSDL 1.0. Никаких серьезных изменений между версиями 1.0 и 1.1 не было.
WSDL 1.2 (июнь 2003 г.) был рабочим проектом W3C, но превратился в WSDL 2.0. По мнению W3C: WSDL 1.2 проще и гибче для разработчиков, чем предыдущая версия. WSDL 1.2 пытается удалить несовместимые функции, а также лучше определяет привязку HTTP 1.1. WSDL 1.2 не поддерживался большинством серверов/поставщиков SOAP.
WSDL 2.0 стал рекомендацией W3C в июне 2007 года. WSDL 1.2 был переименован в WSDL 2.0, поскольку он имеет существенные отличия от WSDL 1.1. Изменения заключаются в следующем:
- Добавлена дополнительная семантика в язык описания.
- Удалены конструкции сообщений
- Перегрузка операторов не поддерживается
- Типы портов переименованы в интерфейсы
- Порты переименованы в конечные точки
Подмножество WSDL
[ редактировать ]Подмножество WSDL (SWSDL) [4] представляет собой WSDL с подмножеством операций исходного WSDL. Разработчик может использовать SWSDL для доступа к службе подмножества и, таким образом, обрабатывать подмножество кода веб-службы. Подмножество WSDL можно использовать для тестирования веб-сервисов и разработки сверху вниз. Нарезка веб-службы может быть выполнена с использованием Subset WSDL для доступа к Subset Service. Подмножество услуг можно разделить на уровни с помощью SWSDL. SWSDL используются для анализа, тестирования и разработки веб-сервисов сверху вниз. АВСММ [5] — это инструмент, который может идентифицировать операции подмножества в файле WSDL для создания подмножества WSDL.
Соображения безопасности
[ редактировать ]Поскольку файлы WSDL представляют собой спецификацию на основе XML для описания веб-службы, файлы WSDL подвержены атакам. [6] Чтобы снизить уязвимость этих файлов, рекомендуется ограничить доступ к созданным файлам WSDL, установить надлежащие ограничения доступа к определениям WSDL и избегать ненужных определений в веб-службах.
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ «Язык определения веб-служб (WSDL) версии 2.0, часть 1: основной язык» . Проверено 27 июня 2007 г.
- ^ «Язык определения веб-служб (WSDL) версии 2.0, часть 2: Дополнения» .
- ^ «Привязка HTTP WITW WSDL 2.0» . Архивировано из оригинала 20 июня 2012 г. Проверено 20 сентября 2007 г.
- ^ Чатурведи, Анимеш (2014). Подмножество WSDL для доступа к подмножеству службы для анализа . 2014 6-я Международная конференция IEEE по технологиям и науке облачных вычислений. п. 688. дои : 10.1109/CloudCom.2014.149 . ISBN 978-1-4799-4093-6 .
- ^ Чатурведи, Анимеш (2014). Автоматизированное управление изменениями веб-сервисов AWSCM — инструмент . 2014 6-я Международная конференция IEEE по технологиям и науке облачных вычислений. п. 715. дои : 10.1109/CloudCom.2014.144 . ISBN 978-1-4799-4093-6 .
- ^ «Раскрытие WSDL» . Проверено 31 мая 2017 г.
Внешние ссылки
[ редактировать ]- Спецификация WSDL 1.0
- Спецификация WSDL 1.1
- Спецификация WSDL 2.0
- Рабочая группа по описанию веб-сервисов
- Активность протокола XML
- JSR-110: API Java для WSDL
- JSR 172: Спецификация веб-служб Java ME
- Онлайн-валидатор WSDL
- Привязки Java WSDL , заархивированные 11 апреля 2009 г. на Wayback Machine для XMLBeans и JAXB.
- RELAX-WS: простой язык определения веб-сервисов, основанный на компактном синтаксисе RELAX NG.
- Кевин Лю. Взгляд на WSDL 2.0 . Дата обращения: 20 апреля 2010 г.