Учебное пособие по WSDL: язык описания веб-служб с примером

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

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

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

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

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

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

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

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

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

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

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

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

Другими словами, WSDL подобен открытке с адресом определенного места. Адрес предоставляет деtails человека, доставившего открытку. Следовательно, аналогичным образом файл 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 содержит следующееwing главные части

  1. Команда тег используется для определения всех complex типы данных, которые будут использоваться в сообщении, которым обмениваются клиентское приложение и веб-служба. Это важный аспект клиентского приложения, поскольку если веб-сервис работает с компьютеромplex тип данных, то клиентское приложение должно знать, как обрабатывать com.plex тип данных. Типы данных, такие как float, numbersи строки — это простые типы данных, но могут быть и структурированные типы данных, предоставляемые веб-службой.
    Например, может существовать тип данных с именем «EmployeeDataType», который может иметь два элемента с именем «EmployeeName» строкового типа и «EmployeeID» числового или целого типа. Вместе они образуют структуру данных, которая затем становится компьютером.plex тип данных.
  2. Команда Тег используется для определения сообщения, которым обмениваются клиентское приложение и веб-сервер. Эти сообщения объясняют ввод и вывод. operaдействия, которые может выполнять веб-сервис. Примером сообщения может быть сообщение, которое принимает идентификатор сотрудника, а выходным сообщением может быть имя сотрудника на основе предоставленного идентификатора сотрудника.
  3. Команда тег используется для инкапсуляции каждого входного и выходного сообщения в одно логическое operaция. Так что может быть operaФункция под названием «GetEmployee», которая объединяет входное сообщение о принятии идентификатора сотрудника из клиентского приложения и последующую отправку имени сотрудника в качестве выходного сообщения.
  4. Команда тег используется для привязки operaпривязки к конкретному типу порта. Это сделано для того, чтобы когда клиентское приложение вызывало соответствующий тип порта, оно могло получить доступ к operaпараметры, привязанные к этому типу порта. Типы портов аналогичны интерфейсам. Поэтому, если клиентскому приложению необходимо использовать веб-службу, ему необходимо использовать информацию привязки, чтобы гарантировать возможность подключения к интерфейсу, предоставляемому этой веб-службой.
  5. Команда тег — это имя, данное самому веб-сервису. Первоначально, когда клиентское приложение выполняет вызов веб-службы, оно выполняет вызов имени веб-службы. Например, веб-служба может располагаться по такому адресу, как http://localhost/Guru99/Tutorial.asmx . Тег службы фактически будет иметь URL-адрес, определенный как http://localhost/Guru99/Tutorial.asmx, который фактически сообщит клиентскому приложению, что в этом месте доступен веб-сервис.

Почему WSDL

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

Веб-сервис имеет следующееwing ключевая особенность

  • Он построен с использованием языка программирования 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 состоит из раздела «сообщения», который обозначается элемент.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  1. В приведенном выше примере показано, что привязка состоит из имени привязки, которое в нашем случае указано как «TutorialSoapBinding». Проще говоря, привязка — это информация, которую клиентское приложение использует для фактической привязки себя к веб-службе. Как только он действительно будет привязан к веб-сервису, он сможет вызывать различные operaпараметры, предоставляемые веб-службой.
  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». Затем веб-метод вернет строку с именем «Веб-службы».

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

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

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

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

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

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

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

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

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

Щелкните правой кнопкой мыши Visual Studio файл решения и выберите опцию «Добавить->Новый проект».

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

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

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

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

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

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

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

Чтобы выполнить этот шаг, щелкните правой кнопкой мыши проект DemoApplication и выберите параметр «Сделать стартовым проектом».

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

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

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

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

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

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

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

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

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

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

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

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

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

			Console.WriteLine(client.GetTutorialService(l));
			
			Console.ReadKey();
		}
	}
}

Объяснение кода: -

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

Результат

После выполнения всех вышеперечисленных шагов и запуска DemoApplication будет отображен приведенный ниже вывод.yed.

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

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

Итого

  • Полная форма WSDL — это язык описания веб-служб.
  • Документ WSDL — это документ, используемый для описания веб-службы. Это ключ к тому, чтобы любое клиентское приложение знало, где находится веб-сервис. Это также позволяет клиентскому приложению понимать методы, доступные в веб-сервисе.
  • Файл WSDL упрощает реализацию веб-службы на одном языке программирования и вызов ее с другого языка программирования.
  • Документ WSDL обычно состоит из сообщения. Для каждого веб-метода есть два сообщения: одно для ввода, а другое для вывода. Вместе они образуют operaния.
  • Файлы языка описания веб-служб (расшифровывается как WSDL) обычно создаются в редакторе, который используется для соответствующего языка программирования.
  • Мы увидели, как мы можем использовать веб-сервис в Visual Studio. Это можно сделать, создав еще один проект, который представляет собой консольное приложение. Затем, добавив ссылку на сервис, мы сможем получить доступ к веб-методам нашего веб-сервиса.