Что такое файл wsdl

Обновлено: 21.11.2024

Документ WSDL описывает веб-службу. Он указывает местоположение службы и методы службы, используя следующие основные элементы:

Основная структура документа WSDL выглядит следующим образом:


определения типов данных.


определение передаваемых данных.


набор операций.


протокол и спецификация формата данных.

Пример WSDL

Это упрощенная часть документа WSDL:

В этом примере

Элемент определяет "glossaryTerms" как имя порта и "getTerm" как имя операции.

Операция "getTerm" имеет входное сообщение с именем "getTermRequest" и выходное сообщение с именем "getTermResponse".

Элементы определяют части каждого сообщения и связанные типы данных.

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

Тип запроса-ответа является наиболее распространенным типом операции, но WSDL определяет четыре типа:

Тип Определение
Односторонний Операция может получить сообщение, но не вернет ответ
Запрос-ответ Операция может получить запрос и вернуть ответ
Запрос-ответ Операция может отправить запрос и будет ожидать ответа
Уведомление Операция может отправить сообщение, но не будет ждать ответа

Односторонняя операция WSDL

Пример односторонней операции:

В приведенном выше примере тип порта "glossaryTerms" определяет одностороннюю операцию "setTerm".

Операция "setTerm" позволяет вводить новые сообщения терминов глоссария, используя сообщение "newTermValues" с входными параметрами "term" и "value". Однако выходные данные для операции не определены.

Операция запроса-ответа WSDL

Пример операции запрос-ответ:

В приведенном выше примере тип порта "glossaryTerms" определяет операцию "запрос-ответ" под названием "getTerm".

Для операции "getTerm" требуется входное сообщение "getTermRequest" с параметром "term" и будет возвращено выходное сообщение "getTermResponse" с параметром "value".

Привязка WSDL к SOAP

Привязки WSDL определяют формат сообщения и сведения о протоколе для веб-службы.

Пример операции запрос-ответ:

Элемент привязки имеет два атрибута: имя и тип.

Атрибут name (вы можете использовать любое имя) определяет имя привязки, а атрибут type указывает на порт для привязки, в данном случае порт "glossaryTerms".

Элемент soap:binding имеет два атрибута: стиль и транспорт.

Элемент операции определяет каждую операцию, которую предоставляет тип порта.

Для каждой операции должно быть определено соответствующее действие SOAP. Вы также должны указать, как кодируются ввод и вывод. В этом случае мы используем «литерал».

Документ WSDL описывает веб-службу. Он указывает местоположение службы и методы службы, используя следующие основные элементы:

Основная структура документа WSDL выглядит следующим образом:


определения типов данных.


определение передаваемых данных.


набор операций.


протокол и спецификация формата данных.

Пример WSDL

Это упрощенная часть документа WSDL:

В этом примере

Элемент определяет "glossaryTerms" как имя порта и "getTerm" как имя операции.

Операция "getTerm" имеет входное сообщение с именем "getTermRequest" и выходное сообщение с именем "getTermResponse".

Элементы определяют части каждого сообщения и связанные типы данных.

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

Тип запроса-ответа является наиболее распространенным типом операции, но WSDL определяет четыре типа:

Тип Определение
Односторонний Операция может получить сообщение, но не вернет ответ
Запрос-ответ Операция может получить запрос и вернуть ответ
Запрос-ответ Операция может отправить запрос и будет ожидать ответа
Уведомление Операция может отправить сообщение, но не будет ждать ответа

Односторонняя операция WSDL

Пример односторонней операции:

В приведенном выше примере тип порта "glossaryTerms" определяет одностороннюю операцию "setTerm".

Операция "setTerm" позволяет вводить новые сообщения терминов глоссария, используя сообщение "newTermValues" с входными параметрами "term" и "value". Однако выходные данные для операции не определены.

Операция запроса-ответа WSDL

Пример операции запрос-ответ:

В приведенном выше примере тип порта "glossaryTerms" определяет операцию "запрос-ответ" под названием "getTerm".

Для операции "getTerm" требуется входное сообщение "getTermRequest" с параметром "term" и будет возвращено выходное сообщение "getTermResponse" с параметром "value".

Привязка WSDL к SOAP

Привязки WSDL определяют формат сообщения и сведения о протоколе для веб-службы.

Пример операции запрос-ответ:

Элемент привязки имеет два атрибута: имя и тип.

Атрибут name (вы можете использовать любое имя) определяет имя привязки, а атрибут type указывает на порт для привязки, в данном случае порт "glossaryTerms".

Элемент soap:binding имеет два атрибута: стиль и транспорт.

Элемент операции определяет каждую операцию, которую предоставляет тип порта.

Для каждой операции должно быть определено соответствующее действие SOAP. Вы также должны указать, как кодируются ввод и вывод. В этом случае мы используем «литерал».

Статус

Этот документ представлен Консорциуму World Wide Web (см. Запрос на представление, Комментарий персонала W3C) в качестве предложения по описанию служб для деятельности W3C XML по XML-протоколам. Полный список всех подтвержденных материалов см. в разделе Подтвержденные материалы для W3C.

Этот черновой вариант представляет текущее представление об описании услуг в Ariba, IBM и Microsoft. В нем объединены концепции, содержащиеся в NASSL, SCL и SDL (более ранние предложения в этой области).

Этот документ является ПРИМЕЧАНИЕМ, предоставленным W3C только для обсуждения. Публикация этого примечания W3C означает отсутствие одобрения со стороны W3C, команды W3C или каких-либо членов W3C. W3C не имел никакого редакционного контроля над подготовкой этой заметки. Этот документ находится в стадии разработки и может быть обновлен, заменен или признан устаревшим другими документами в любое время.

Список текущих технических документов W3C можно найти на странице технических отчетов.

Содержание

1. Введение

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

Документ WSDL определяет службы как наборы сетевых конечных точек или портов. В WSDL абстрактное определение конечных точек и сообщений отделено от их конкретного сетевого развертывания или привязок формата данных. Это позволяет повторно использовать абстрактные определения: сообщения, которые являются абстрактными описаниями данных, которыми обмениваются, и типы портов, которые являются абстрактными наборами операций. Конкретные спецификации протокола и формата данных для определенного типа порта представляют собой многократно используемую привязку. Порт определяется путем связывания сетевого адреса с многократно используемой привязкой, а набор портов определяет службу. Следовательно, документ WSDL использует следующие элементы в определении сетевых служб:

  • Типы – контейнер для определений типов данных с использованием некоторой системы типов (например, XSD).
  • Сообщение – абстрактное типизированное определение передаваемых данных.
  • Операция — абстрактное описание действия, поддерживаемого службой.
  • Тип порта — абстрактный набор операций, поддерживаемых одной или несколькими конечными точками.
  • Привязка — спецификация конкретного протокола и формата данных для определенного типа порта.
  • Порт – единая конечная точка, определяемая как комбинация привязки и сетевого адреса.
  • Сервис – набор связанных конечных точек.

Эти элементы подробно описаны в разделе 2. Важно отметить, что WSDL не вводит новый язык определения типов. WSDL признает потребность в богатых системах типов для описания форматов сообщений и поддерживает спецификацию схем XML (XSD) [11] в качестве своей канонической системы типов. Однако, поскольку неразумно ожидать, что для описания всех существующих и будущих форматов сообщений будет использоваться единая системная грамматика типов, WSDL позволяет использовать другие языки определения типов посредством расширяемости.

Кроме того, WSDL определяет общий механизм привязки. Это используется для присоединения определенного протокола или формата данных или структуры к абстрактному сообщению, операции или конечной точке. Это позволяет повторно использовать абстрактные определения.

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

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

1.2 Пример документа WSDL

В этом примере используется фиксированный формат XML вместо кодировки SOAP (пример использования кодировки SOAP см. в примере 4).

1.2 Условные обозначения

<р>1. Ключевые слова «ДОЛЖЕН», «НЕ ДОЛЖЕН», «ТРЕБУЕТСЯ», «ДОЛЖЕН», «НЕ ДОЛЖЕН», «СЛЕДУЕТ», «НЕ ДОЛЖЕН», «РЕКОМЕНДУЕТСЯ», «МОЖЕТ» и «ДОПОЛНИТЕЛЬНО» в этом документе интерпретироваться, как описано в RFC-2119 [2].

<р>2. В этом документе используются следующие префиксы пространств имен:

<р>3. В этой спецификации используется неформальный синтаксис для описания грамматики XML документа WSDL:

A 1.2 Относительные URI

A 1.3 Генерация URI

При работе с WSDL иногда желательно составить URI для сущности, но не делать URI глобально уникальным на все времена и «означать» эту версию сущности (схему, документ WSDL и т. ). Для этого типа поведения зарезервирована определенная база URI. Базовый URI «http://tempuri.org/» может использоваться для создания URI без какой-либо уникальной связи с объектом. Например, два человека или программы могут решить одновременно использовать URI «http://tempuri.org/myschema» для двух совершенно разных схем, и до тех пор, пока область использования URI не пересекается, они считается достаточно уникальным. Это имеет дополнительное преимущество, заключающееся в том, что объект, на который ссылается URI, может быть версионирован без создания нового URI, если это имеет смысл в контексте обработки. Не рекомендуется использовать "http://tempuri.org/" в качестве базы для стабильных фиксированных объектов.

A 2. Формат Wire для примеров WSDL

А 2.1. Пример 1

A 3. Расположение элементов расширения

Элементы расширения могут появляться в документе WSDL в следующих местах:

� Предоставьте дополнительную информацию о протоколе для входного сообщения.

� Предоставьте дополнительную информацию, относящуюся к протоколу, для выходного сообщения.

� Предоставьте дополнительную информацию, относящуюся к протоколу, для сообщения об ошибке.

Язык описания веб-служб (WSDL) — это файл на основе XML, который в основном сообщает клиентскому приложению, что делает веб-служба. Файл WSDL используется для краткого описания того, что делает веб-служба, и предоставляет клиенту всю информацию, необходимую для подключения к веб-службе и использования всех функций, предоставляемых веб-службой.

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

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

В этом уроке вы узнаете-

Структура WSDL-документа

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

  • Файл WSDL содержит расположение веб-службы и
  • Методы, предоставляемые веб-службой.

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

Ниже представлена ​​общая структура файла WSDL

  • Определение
  • Целевое пространство имен
  • Типы данных
  • Сообщения
  • Тип порта
  • Привязки
  • сервис

Один ключевой момент, на который следует обратить внимание, это то, что определение сообщений, которые передаются по протоколу SOAP, фактически определено в документе WSDL.

Документ WSDL фактически сообщает клиентскому приложению, какие типы сообщений SOAP отправляются и принимаются веб-службой.

Другими словами, WSDL похож на открытку с адресом определенного места. В адресе указаны данные лица, доставившего открытку. Следовательно, таким же образом файл WSDL представляет собой открытку с адресом веб-службы, которая может предоставлять все функции, необходимые клиенту.

Ниже представлена ​​схема структуры файла WSDL

Элементы WSDL

Файл WSDL содержит следующие основные части

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

Например, может быть тип данных с именем EmployeeDataType, который может иметь 2 элемента: "EmployeeName" типа string и "EmployeeID" типа number или integer. Вместе они образуют структуру данных, которая затем становится сложным типом данных.

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

Тег

используется для инкапсуляции каждого входного и выходного сообщения в одну логическую операцию. Таким образом, может быть операция под названием «GetEmployee», которая объединяет входное сообщение о принятии EmployeeID от клиентского приложения и последующей отправке EmployeeName в качестве выходного сообщения.

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

Почему WSDL

Веб-служба имеет следующие основные функции

Файл WSDL написан на простом старом XML. Причина, по которой он находится в формате XML, заключается в том, что файл может быть прочитан на любом языке программирования.

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

Часть сообщения WSDL

WSDL состоит из раздела "сообщения", который обозначается элементом.

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

У каждой веб-службы всегда будет 2 типа сообщений,

  • Один предназначен для ввода веб-службы, а другой — для вывода веб-службы.
  • Ввод используется для описания параметров, принимаемых веб-службой. Это важный аспект клиентского приложения, так как оно знает значения, которые должны быть отправлены в качестве параметров в веб-службу.
  • Другой тип сообщения — это выходное сообщение, в котором сообщается, какие результаты предоставляются веб-службой.

Каждое сообщение, в свою очередь, будет иметь

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

Ниже приведен простой пример того, как выглядит сообщение для веб-службы. Функциональность веб-службы заключается в предоставлении имени «Учебного пособия» после отправки «Идентификатора учебного пособия» в качестве параметра веб-службе.

  1. Как мы видим, веб-сервис имеет 2 сообщения, одно для ввода, а другое для вывода.
  2. Входящее сообщение называется TutorialNameRequest и имеет один параметр TutorialID. Этот параметр имеет тип number, указанный типом xsd:number
  3. Выходное сообщение называется TutorialNameResponse и имеет один параметр TutorialName. Этот параметр имеет тип string, который задается типом xsd:string

Привязка типа порта

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

В предыдущем разделе мы видели, что наша веб-служба предоставила 2 сообщения: одно для ввода под названием «TutorialNameRequest», а другое для вывода под названием «TutorialNameResponse». Вместе форма входного и выходного сообщения называется одной завершенной операцией.

WSDL предоставляет элемент с именем

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

Итак, в приведенном выше примере мы можем отметить следующее:

  1. Имя типа порта, которое инкапсулирует операцию, указывается как «Tutorial_PortType».
  2. Сама операция называется «Обучение». Таким образом, наша операция в основном предоставляет TutorialName, если TutorialID задан как входной параметр.
  3. Далее наши 2 сообщения, одно для ввода и другое для вывода, которые формируют нашу операцию

В дополнение к

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

Создание файла WSDL

Файл WSDL создается всякий раз, когда веб-служба создается на любом языке программирования.

Ниже приведен пример файла WSDL, созданного в Visual Studio.

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

Публикация примера веб-службы

Теперь давайте рассмотрим пример того, как мы можем опубликовать веб-службу и использовать ее с помощью Visual Studio.

В этом примере мы создадим веб-службу с одним веб-методом. Этот метод будет принимать целочисленный параметр под названием «TutorialID». Затем веб-метод вернет строку с именем «Веб-службы».

Затем мы создадим консольное приложение, которое будет использовать эту веб-службу и соответствующим образом вызывать наш веб-метод.

Давайте рассмотрим шаги, необходимые для выполнения этого примера.

Пояснение кода:

  1. Здесь мы создаем веб-метод под названием «Guru99WebService». В этот веб-метод мы включаем целочисленный параметр, который необходимо передавать при каждом вызове этого веб-метода.
  2. Далее мы определяем переменную под названием «TutorialName», которая будет содержать строковое значение «Веб-службы». Это значение, которое будет возвращено при вызове веб-службы.

Шаг 2. После того, как мы определили файл веб-службы, следующим шагом будет создание клиентского проекта, который будет использовать эту веб-службу.

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

Щелкните правой кнопкой мыши файл решения Visual Studio и выберите команду Добавить->Новый проект

Шаг 3) На этом шаге

После того, как вы нажмете кнопку OK на приведенном выше экране, вы сможете увидеть проект в обозревателе решений в Visual Studio.

Шаг 4) На этом шаге вы устанавливаете приложение DemoApplication Console в качестве запускаемого проекта. Это делается для того, чтобы это приложение запускалось первым при запуске всего проекта Visual Studio. Это консольное приложение, в свою очередь, вызовет веб-службу, которая будет автоматически запущена Visual Studio.

Чтобы выполнить этот шаг, щелкните правой кнопкой мыши проект DemoApplication и выберите параметр "Установить как запускаемый проект".

Шаг 5. Следующим шагом является добавление ссылки на наш «Guru99Webservice» в наше консольное приложение. Это делается для того, чтобы приложение DemoApplication могло ссылаться на веб-службу и все веб-методы в веб-службе.

Для этого щелкните правой кнопкой мыши файл проекта DemoApplication и выберите пункт меню Добавить->Ссылка на службу.

Шаг 6. На этом шаге мы предоставим различные значения, необходимые для добавления ссылки на нашу службу

Когда мы нажмем кнопку «ОК», весь код, необходимый для доступа к этой веб-службе, будет добавлен в наше приложение DemoApplication Console, как показано ниже.

Снимок экрана показывает, что «Guru99Webservice» был успешно добавлен в наше консольное приложение.

Шаг 7. Следующим шагом является добавление кода в наше консольное приложение для доступа к веб-методу в нашей веб-службе. Откройте файл кода Program.cs, который автоматически поставляется вместе с консольным приложением, и добавьте приведенный ниже код

Пояснение кода:-

  1. Первая часть — это выбор файла Program.cs. Это основной файл, который создается Visual Studio при создании консольного приложения. Этот файл запускается при запуске консольного приложения (в нашем случае демонстрационного приложения).
  2. Затем мы создаем переменную под названием «клиент», в которой будет установлен экземпляр нашей ссылки на службу, созданный на предыдущем шаге. В нашем случае ссылка на службу — Guru99Webservice.Guru99WebserviveSoapClient().
  3. Затем мы вызываем наш веб-метод GetTutorialService в веб-службе TutorialService. Помните, что наш метод GetTutorialService принимает целочисленный параметр, поэтому мы просто передаем целочисленный параметр веб-методу.
  4. Эта последняя строка предназначена только для того, чтобы экран журнала консоли оставался активным, чтобы мы могли просматривать вывод. Эта команда будет просто ждать ввода данных от пользователя.

Вывод

Когда все вышеперечисленные шаги выполнены и приложение DemoApplication запущено, отобразится следующий вывод.

Из вывода ясно видно, что приложение DemoApplication вызывает нашу веб-службу и что строка, возвращаемая веб-службой, отображается в журнале консоли.

Возможно, вы видели мой предыдущий пост о вызовах SOAP и REST. В настоящее время компании переходят на сервисные вызовы REST, но все же большинство компаний по-прежнему используют SOAP вместо REST. В этом руководстве объясняются основы WSDL (языка описания веб-служб).

Если у вас есть какие-либо вопросы из приведенных ниже, то вы обратились по адресу:

  • Что такое язык описания веб-служб (WSDL)?
  • Учебное пособие по WSDL
  • Объяснение языка описания веб-служб (WSDL)
  • Примеры WSDL — языка описания веб-служб

Язык описания веб-служб (WSDL)

В Java Web Development World WSDL — это формат XML для описания сетевых служб как набора конечных точек, работающих с сообщениями, содержащими либо документо-ориентированную, либо процедурно-ориентированную информацию.

Операции и сообщения описываются абстрактно, а затем привязываются к конкретному сетевому протоколу и формату сообщения для определения конечной точки. Связанные конкретные конечные точки объединяются в абстрактные конечные точки (сервисы).

Другой должен читать:

Другими словами: документ WSDL определяет службы как наборы сетевых конечных точек или портов. В WSDL абстрактное определение конечных точек и сообщений отделено от их конкретного сетевого развертывания или привязок формата данных. Это позволяет повторно использовать абстрактные определения: сообщения, которые представляют собой абстрактные описания данных, которыми обмениваются, и типы портов, которые представляют собой абстрактные наборы операций.

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

Поэтому документ WSDL использует следующие элементы в определении сетевых служб:

Читайте также: