Что такое WSDL? Значение и примеры.

⚡ Умное резюме

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

  • 📄 Основное определение: WSDL — это XML-файл, описывающий местоположение веб-сервиса, выполняемые им операции, а также принимаемые и возвращаемые им сообщения.
  • ???? ️ Структура документа: Документ WSDL состоит из элементов types, message, portType, binding и service, заключенных в корневой каталог definitions.
  • 🔤 Ключевые элементы: Элемент types определяет типы данных, message определяет обмениваемые данные, portType группирует операции, а binding сопоставляет их с протоколом.
  • ✉️ Сообщения и порты: Каждый веб-метод использует входное и выходное сообщения, которые вместе образуют одну операцию, доступную через определенный тип порта.
  • 🇧🇷 Автоматически сгенерировано: Редакторы, такие как Visual Studio и Eclipse Автоматически генерируется WSDL-файл, который клиентские приложения используют для вызова сервиса.

Что такое WSDL?

Что такое ВСДЛ?

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

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

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

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

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

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

  • Определение
  • TargetПространство имен
  • Типы данных
  • Сообщения
  • Тип порта
  • Наручники
  • Cервис

Здесь важно отметить, что определение сообщений, то есть того, что передается, — это... Протокол SOAPФактически, это определено в документе WSDL. Документ WSDL сообщает клиентскому приложению, какие типы SOAP-сообщений отправляются и принимаются веб-сервисом.

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

<!-- WSDL definition structure -->
<definitions
      name="Guru99Service"
      targetNamespace=http://example.org/math/
      xmlns=http://schemas.xmlsoap.org/wsdl/>
   <!-- abstract definitions -->
      <types> ...
      <message> ...
      <portType> ...

   <!-- concrete definitions -->
      <binding> ...
      <service> ...
</definition>

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

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

Структура WSDL

WSDL-элементы

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

  1. Тег используется для определения всех сложных типов данных, которые будут использоваться в сообщении, обмениваемом между клиентским приложением и веб-сервисом. Это важно, потому что если веб-сервис работает со сложным типом данных, то клиентское приложение должно знать, как его обрабатывать. Такие типы данных, как float, numbers и strings, являются простыми типами данных, но веб-сервис может предоставлять и структурированные типы данных. Например, может существовать тип данных под названием EmployeeDataType, который может содержать два элемента: “EmployeeName” типа string и “EmployeeID” типа number или integer. Вместе они образуют сложный тип данных.
  2. Тег используется для определения сообщения, которым обмениваются клиентское приложение и веб-сервер. Эти сообщения описывают операции ввода и вывода, которые может выполнять веб-сервис. Примером сообщения может быть сообщение, которое принимает идентификатор сотрудника (EmployeeID), а выходным сообщением может быть имя сотрудника, основанное на предоставленном EmployeeID.
  3. Тег используется для инкапсуляции каждого входного и выходного сообщения в одну логическую операцию. Таким образом, может существовать операция под названием «GetEmployee», которая объединяет входное сообщение о принятии идентификатора сотрудника из клиентского приложения и последующую отправку имени сотрудника в качестве выходного сообщения.
  4. Тег используется для привязки операции к определенному типу порта. Это необходимо для того, чтобы при вызове клиентским приложением соответствующего типа порта оно могло получить доступ к привязанным к нему операциям. Типы портов подобны интерфейсам. Поэтому, если клиентскому приложению необходимо использовать веб-сервис, ему нужно использовать информацию о привязке, чтобы гарантировать возможность подключения к интерфейсу, предоставляемому этим веб-сервисом.
  5. Тег — это имя, присвоенное самому веб-сервису. Первоначально, когда клиентское приложение обращается к веб-сервису, оно делает это, указывая имя веб-сервиса. Например, веб-сервис может находиться по адресу, такому как http://localhost/Guru99/Tutorial.asmx. Сервисный тег будет содержать URL Определено, что сообщает клиентскому приложению о доступности веб-сервиса по этому адресу.

Почему WSDL

Веб-сервис — важный компонент при создании современных веб-приложений. Его основная цель — обеспечить взаимодействие между несколькими приложениями, разработанными на разных языках программирования. Например, веб-приложение на .NET может взаимодействовать с другим приложением. Java приложение через веб-сервис.

Веб-сервис обладает следующими ключевыми характеристиками:

  • Он создан с использованием языка программирования XML. Практически все современные технологии, такие как .Net и Java иметь соответствующие команды, имеющие возможность работы с XML. Следовательно, XML был признан наиболее подходящим языком для создания веб-сервисов.
  • Веб-сервисы взаимодействуют по протоколу HTTP. HTTP — это протокол, используемый всеми веб-приложениями. Поэтому было логично обеспечить возможность работы веб-сервисов и по протоколу HTTP.
  • Веб-сервисы соответствуют определенной спецификации языка. Эта спецификация установлена ​​W3C, который является руководящим органом для всех веб-стандартов.
  • Веб-сервисы имеют язык описания, известный как WSDL, который используется для описания веб-сервиса.

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

Необходимость в WSDL

Файл WSDL связывает все воедино. Из приведенной выше диаграммы видно, что веб-сервис можно создать на языке .NET. Именно здесь реализуется сервис. Если у вас не было файла WSDL и вы хотели бы его получить, Java Для реализации класса, позволяющего использовать веб-сервис, потребовалось бы много усилий по программированию. Но теперь, благодаря WSDL-файлу, который находится в формате XML и может быть понят любым языком программирования, это легко сделать. Java класс использует веб-сервис .Net. Следовательно, объем усилий по кодированию значительно сокращается.

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

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

Каждый веб-сервис всегда будет обрабатывать 2 типа сообщений:

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

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

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

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

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

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

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

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

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

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

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

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

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

  1. В приведенном выше примере показано, что привязка состоит из имени привязки, которое в нашем случае задано как «TutorialSoapBinding». Привязка, простыми словами, — это информация, которую клиентское приложение использует для фактической привязки к веб-сервису. После привязки к веб-сервису оно получает возможность вызывать различные операции, предоставляемые веб-сервисом.
  2. Транспортный уровень обозначается как http://, что означает, что сообщения будут передаваться по протоколу HTTP.

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

Файл WSDL создается при каждом создании веб-сервиса на любом языке программирования. Поскольку создание файла WSDL с нуля — довольно сложная задача, все редакторы, такие как Visual Studio для .NET и другие, могут её использовать. Eclipse для Java автоматически создать файл WSDL.

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

<?xml version="1.0"?>
<definitions name="Tutorial"
      targetNamespace=http://Guru99.com/Tutorial.wsdl
      xmlns:tns=http://Guru99.com/Tutorial.wsdl
      xmlns:xsd1=http://Guru99.com/Tutorial.xsd
      xmlns:soap=http://schemas.xmlsoap.org/wsdl/soap/
      xmlns="http://schemas.xmlsoap.org/wsdl/">
   <types>
      <schema targetNamespace=http://Guru99.com/Tutorial.xsd
         xmlns="http://www.w3.org/2000/10/XMLSchema">
         <element name="TutorialNameRequest">
            <complexType>
               <all>
                  <element name="TutorialName" type="string"/>
               </all>
            </complexType>
         </element>
         <element name="TutorialIDRequest">
            <complexType>
               <all>
                  <element name="TutorialID" type="number"/>
               </all>
            </complexType>
         </element>
      </schema>
   </types>
   <message name="GetTutorialNameInput">
      <part name="body" element="xsd1:TutorialIDRequest"/>
   </message>
   <message name="GetTutorialNameOutput">
      <part name="body" element="xsd1:TutorialNameRequest"/>
   </message>
   <portType name="TutorialPortType">
      <operation name="GetTutorialName">
         <input message="tns:GetTutorialNameInput"/>
         <output message="tns:GetTutorialNameOutput"/>
      </operation>
   </portType>
   <binding name="TutorialSoapBinding" type="tns:TutorialPortType">
      <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
      <operation name="GetTutorialName">
         <soap:operation soapAction="http://Guru99.com/GetTutorialName"/>
         <input>
            <soap:body use="literal"/>
         </input>
         <output>
            <soap:body use="literal"/>
         </output>
      </operation>
   </binding>
   <service name="TutorialService">
      <documentation>TutorialService</documentation>
      <port name="TutorialPort" binding="tns:TutorialSoapBinding">
         <soap:address location="http://Guru99.com/Tutorial"/>
      </port>
   </service>
</definitions>

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

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

Теперь рассмотрим пример того, как можно опубликовать веб-сервис и использовать его с помощью Visual Studio. В этом примере мы создадим веб-сервис с одним методом WebMethod. Этот метод будет принимать целочисленный параметр с именем «TutorialID». Затем метод WebMethod вернет строку с именем «Web Services».

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

Шаг 1) Первым шагом является создание вашего веб-сервиса. Подробные этапы того, как Асп.Нет Было объяснено, как создаются веб-проект и веб-сервис. здесьПожалуйста, выполните те же шаги для создания проекта и веб-сервиса. Ключевой момент — ввести приведенный ниже код в файл веб-сервисов.

Публикация примера кода веб-сервиса.

namespace webservic_asmx
{
   [WebService(Name = "Guru99 Web service")]
   public class TutorialService : System.Web.Services.WebService
   {
      [WebMethod]
      public string GetTutorialService(int TutorialID)
      {
         string TutorialName = "Web Services";
         return TutorialName;
      }
   }
}

Code Объяснение:

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

Шаг 2) После определения файла веб-сервисов следующим шагом будет создание клиентского проекта, который будет использовать этот веб-сервис. Давайте создадим простое консольное приложение, которое будет вызывать этот веб-сервис, используя функцию «Guru99WebService», а затем отобразите вывод веб-метода на экране консоли. Выполните следующие шаги для создания консольного приложения. Щелкните правой кнопкой мыши файл решения Visual Studio и выберите параметр Добавить -> Новый проект.

Публикация примера веб-сервиса: добавить новый проект

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

  1. Обязательно сначала выберите Visual C# Windows вариант. Затем выберите вариант создания консольного приложения.
  2. Дайте название вашему проекту, которое в нашем случае было «DemoApplication».

Публикация консольного приложения «Пример веб-сервиса»

После нажатия кнопки «ОК» на экране выше вы сможете увидеть проект в обозревателе решений Visual Studio.

Публикация примера веб-сервиса в обозревателе решений

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

Публикация набора примеров веб-сервисов в качестве стартового проекта.

Шаг 5) Следующий шаг — добавить ссылку на услугу нашего "GuruДобавьте ссылку на веб-сервис в наше консольное приложение. Это необходимо для того, чтобы DemoApplication мог ссылаться на веб-сервис и все веб-методы в нем. Для этого щелкните правой кнопкой мыши файл проекта DemoApplication и выберите пункт меню «Добавить» -> «Ссылка на сервис».

Пример публикации веб-сервиса: добавление ссылки на сервис.

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

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

Публикация примера ссылочных значений веб-сервиса

При нажатии на кнопку «ОК» весь необходимый код для доступа к этому веб-сервису будет добавлен в наше консольное приложение DemoApplication, как показано ниже. На скриншоте показано, что «GuruСервис "99Webservice" был успешно добавлен в наше консольное приложение.

Публикация примера веб-сервиса. Сервис добавлен.

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

Публикация кода примера веб-сервиса (Program.cs).

namespace DemoApplication
{
   class Program
   {
      static void Main(string[] args)
      {
         var client = new Guru99Webservice.Guru99WebserviceSoapClient();

         Console.WriteLine(client.GetTutorialService(1));

         Console.ReadKey();
      }
   }
}

Code Объяснение:

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

Результат

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

Публикация результатов примера работы веб-сервиса

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

Часто задаваемые вопросы (FAQ)

Искусственный интеллект способен читать сложный WSDL-файл, объяснять его работу простым языком, генерировать примеры запросов и выявлять несоответствия между компонентами.tracи реализации. Это ускоряет интеграцию с незнакомыми или устаревшими веб-сервисами SOAP.

Да. Искусственный интеллект может преобразовывать определение WSDL в клиентские заглушки, модели данных и примеры вызовов на таких языках, как C#. Java или PythonРазработчикам по-прежнему следует проверять сгенерированный код на правильность пространств имен и обработки ошибок.

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

Да. WSDL остается стандартом для веб-сервисов SOAP в корпоративных, банковских и государственных системах, требующих формального оформления.tracБолее новые REST API обычно используют OpenAPI (Swagger), но многие устаревшие интеграции по-прежнему зависят от WSDL.

Подведем итог этой публикации следующим образом: