Что такое WSDL?
Язык описания веб-служб (WSDL) — это файл на основе XML, который в основном сообщает клиентскому приложению, что делает веб-служба. Файл WSDL используется для краткого описания того, что делает веб-служба, и предоставляет клиенту всю информацию, необходимую для подключения к веб-службе и использования всех функций, предоставляемых веб-службой.
В этом руководстве мы сосредоточимся на последнем пункте, который является наиболее важной частью веб-служб, а именно на WSDL или языке описания веб-служб.
Файл WSDL используется для краткого описания того, что делает веб-служба, и предоставляет клиенту всю информацию, необходимую для подключения к веб-службе и использования всех функций, предоставляемых веб-службой.
В этом уроке вы узнаете
- Структура документа WSDL
- Элементы WSDL
- Почему WSDL
- Часть сообщения WSDL
- Привязка типа порта
- Создание файла WSDL
- Публикация примера веб-сервиса
Структура документа WSDL
Документ WSDL используется для описания веб-службы. Это описание необходимо, чтобы клиентские приложения могли понять, что на самом деле делает веб-служба.
- Файл WSDL содержит местоположение веб-службы и
- Методы, предоставляемые веб-сервисом.
Сам файл WSDL может выглядеть очень сложным для любого пользователя, но он содержит всю необходимую информацию, которая потребуется любому клиентскому приложению для использования соответствующего веб-сервиса.
Ниже приведена общая структура файла WSDL.
- Определение
- TargetNamespace
- Типы данных
- Сообщения
- PortType
- Наручники
- служба
Здесь следует отметить одну ключевую вещь: определение сообщений, то есть то, что передается по протоколу 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 содержит следующие основные части
-
<Типы> тег используется для определения всех сложных типов данных, которые будут использоваться в сообщении , обмениваемые между клиентским приложением и веб — службы. Это важный аспект клиентского приложения, потому что если веб-служба работает со сложным типом данных, то клиентское приложение должно знать, как обрабатывать сложный тип данных. Типы данных, такие как числа с плавающей запятой, числа и строки, являются простыми типами данных, но могут быть структурированные типы данных, которые могут предоставляться веб-службой.
Например, может существовать тип данных с именем EmployeeDataType, который может иметь 2 элемента с именем «EmployeeName» типа string и «EmployeeID» с номером типа или целым числом. Вместе они образуют структуру данных, которая затем становится сложным типом данных.
-
<Сообщения> тег используется для определения сообщения , которое обменивается между клиентским приложением и веб — сервера. Эти сообщения объяснят операции ввода и вывода, которые могут быть выполнены веб-сервисом. Примером сообщения может быть сообщение, которое принимает EmployeeID сотрудника, а выходное сообщение может быть именем сотрудника на основе предоставленного EmpoyeeID.
-
<PortType> тег используются для инкапсуляции каждого входного и выходного сообщения в одну логическую операцию. Таким образом, может существовать операция под названием «GetEmployee», которая объединяет входное сообщение о принятии EmployeeID из клиентского приложения и последующей отправке EmployeeName в качестве выходного сообщения.
-
<Связывание> тег используется для привязки операции к конкретному типу порта. Это связано с тем, что когда клиентское приложение вызывает соответствующий тип порта, оно сможет получить доступ к операциям, связанным с этим типом порта. Типы портов похожи на интерфейсы. Поэтому, если клиентскому приложению необходимо использовать веб-службу, ему необходимо использовать информацию о привязке, чтобы обеспечить возможность подключения к интерфейсу, предоставляемому этой веб-службой.
-
<Сервис> тег является имя , данное самой веб — службы. Первоначально, когда клиентское приложение выполняет вызов веб-службы, оно будет делать это путем вызова имени веб-службы. Например, веб-служба может быть расположена по адресу, например http: //localhost/Guru99/Tutorial.asmx . У тега службы будет URL-адрес, определенный как http: //localhost/Guru99/Tutorial.asmx , который фактически сообщит клиентскому приложению, что в этом месте есть веб-служба.
Почему WSDL
Веб-сервис является важным компонентом в создании современных веб-приложений. Их основная цель — позволить нескольким приложениям, построенным на разных языках программирования, общаться друг с другом. Например, веб-приложение .Net может взаимодействовать с приложением Java через веб-сервис.
Веб-сервис имеет следующие ключевые функции
- Он построен с использованием языка программирования XML. Почти все современные технологии, такие как .Net и Java, имеют соответствующие команды, способные работать с XML. Следовательно, XML был выбран как наиболее подходящий язык для создания веб-сервисов.
- Веб-сервисы общаются по HTTP. HTTP — это протокол, используемый всеми веб-приложениями. Следовательно, имеет смысл убедиться, что веб-сервисы также могут работать по протоколу HTTP.
- Веб-сервисы соответствуют определенной языковой спецификации. Эта спецификация устанавливается W3C, который является руководящим органом для всех веб-стандартов.
- Веб-сервисы имеют язык описания, известный как WSDL, который используется для описания веб-сервиса.
Файл WSDL написан на простом старом XML. Причина, по которой он находится в XML, заключается в том, что файл может быть прочитан любым языком программирования.
Так что, если клиентское приложение было написано в .Net, оно будет понимать файл XML. Точно так же, если клиентское приложение написано на языке программирования Java, оно также сможет интерпретировать файл WSDL.
Файл WSDL — это то, что связывает все вместе. Из приведенной выше диаграммы видно, что вы можете создать веб-сервис на языке .Net.
Так вот, где сервис внедряется. Если у вас нет WSDL-файла и вы хотите, чтобы класс Java использовал веб-сервис, вам потребуется много усилий для написания кода.
Но теперь с файлом WSDL в формате XML, который понятен любому языку программирования, теперь вы можете легко получить класс Java, использующий веб-сервис .Net. Следовательно, объем усилий по кодированию значительно уменьшается.
Часть сообщения WSDL
WSDL состоит из раздела под названием «messages», который обозначается элементом <message> .
Этот элемент в основном используется для описания данных, которыми обмениваются веб-сервис и клиентское приложение.
Каждый веб-сервис всегда будет иметь 2 типа сообщений,
- Один предназначен для ввода веб-службы, а другой — для вывода веб-службы.
- Входные данные используются для описания параметров, которые принимаются веб-сервисом. Это важный аспект клиентского приложения, так как оно знает значения, которые будут отправлены в качестве параметров веб-службе.
- Другой тип сообщения — это выходное сообщение, которое сообщает, какие результаты предоставляет веб-служба.
Каждое сообщение, в свою очередь, будет иметь элемент <part>, который используется для описания параметра, используемого входным и выходным сообщением.
Ниже приведен простой пример того, как выглядит сообщение для веб-службы. Функциональность веб-службы заключается в предоставлении названия «Учебника» после того, как «Идентификатор учебника» передан в качестве параметра веб-службе.
- Как мы видим, веб-сервис имеет 2 сообщения, одно для ввода и другое для вывода.
- Входное сообщение известно как TutorialNameRequest, у которого есть один параметр с именем TutorialID. Этот параметр имеет тип номера, который указан типом xsd: number
- Выходное сообщение известно как TutorialNameResponse, у которого есть один параметр с именем TutorialName. Этот параметр имеет тип string, который указан в xsd: string type
Привязка типа порта
Порты используются в WSDL для определения одной полной операции, предлагаемой веб-службой.
В предыдущей теме мы видели, что наш веб-сервис предоставил 2 сообщения, одно для ввода с именем «TutorialNameRequest», а другое для вывода с именем «TutorialNameResponse». Вместе форма ввода и вывода сообщения известна как одна полная операция.
WSDL предоставляет элемент с именем <portType>, который используется для определения операций, предоставляемых веб-службой.
Итак, в нашем примере выше мы можем отметить следующее:
- Имя типа порта, который инкапсулирует операцию, дается как «Tutorial_PortType».
- Сама операция имеет название «Учебник». Таким образом, наша операция в основном предоставляет TutorialName, если TutorialID указан в качестве входного параметра.
- Следующее — это наши 2 сообщения, одно для ввода и другое для вывода, который формирует нашу операцию
В дополнение к элементу <portType> есть также элемент <binding>, который используется для определения способа передачи сообщений.
- Приведенный выше пример показывает, что привязка состоит из имени привязки, которое в нашем случае задается как «TutorialSoapBinding». Связывание в простых терминах — это информация, которую клиентское приложение использует для привязки к веб-сервису. Как только он действительно связан с веб-сервисом, он может вызывать различные операции, предоставляемые веб-сервисом.
- Транспортный уровень задается как 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. Этот метод будет принимать параметр Integer с именем «TutorialID». Веб-метод затем возвращает строку с именем «Веб-службы».
Затем мы создадим консольное приложение, которое будет использовать этот веб-сервис и соответственно вызовет наш веб-метод.
Давайте посмотрим на шаги, необходимые для выполнения этого примера.
Шаг 1) Первый шаг — создать свой веб-сервис. Подробное описание того, как создается веб-проект Asp.Net и веб-служба, было объяснено здесь; Пожалуйста, выполните те же шаги, чтобы создать проект и веб-сервис соответственно. Ключевой частью является ввод приведенного ниже кода в файл веб-сервисов.
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; } } }
Объяснение кода:
- Здесь мы создаем WebMethod под названием «Guru99WebService». В этот веб-метод мы включаем целочисленный параметр, который необходимо передавать при каждом вызове этого веб-метода.
- Далее мы определяем переменную с именем «TutorialName», которая будет содержать строковое значение «Web Services». Это значение, которое будет возвращено при вызове веб-службы.
Шаг 2) После того, как мы определили файл веб-сервисов, следующим шагом будет создание клиентского проекта, который будет использовать этот веб-сервис.
Давайте создадим простое консольное приложение, которое вызовет этот веб-сервис, вызовет «Guru99WebService» и затем отобразит вывод веб-метода на экране журнала консоли. Выполните следующие шаги, чтобы создать консольное приложение.
Щелкните правой кнопкой мыши файл решения Visual Studio и выберите опцию Добавить-> Новый проект
Шаг 3) На этом этапе
- Убедитесь, что сначала выбрали Windows Visual C # вариант. Затем выберите вариант создания консольного приложения.
- Дайте название вашему проекту, который в нашем случае был назван «DemoApplication».
После того, как вы нажмете кнопку OK на приведенном выше экране, вы сможете увидеть проект в обозревателе решений в Visual Studio.
Шаг 4) На этом этапе вы устанавливаете консольное приложение DemoApplication в качестве запускаемого проекта. Это сделано для того, чтобы приложение запускалось первым при запуске всего проекта Visual Studio. Это консольное приложение, в свою очередь, вызывает веб-сервис, который будет автоматически запущен Visual Studio.
Чтобы выполнить этот шаг, щелкните правой кнопкой мыши проект DemoApplication и выберите параметр «Сделать стартовым проектом».
Шаг 5) Следующим шагом является добавление сервисной ссылки нашего «Guru99Webservice» в наше консольное приложение. Это сделано для того, чтобы DemoApplication мог ссылаться на веб-сервис и все веб-методы в веб-сервисе.
Для этого щелкните правой кнопкой мыши файл проекта DemoApplication и выберите пункт меню Add-> Service Reference.
Шаг 6) На этом шаге мы предоставим различные значения, необходимые для добавления нашей ссылки на услугу.
- Во-первых, нам нужно выбрать наш способ обнаружения. Эта опция автоматически подберет файл WSDL для нашего веб-сервиса TutorialService.
- Далее, мы должны дать имя для нашей справочной службы. В нашем случае мы даем ему имя Guru99Webservice.
- Затем нам нужно расширить опцию TutorialService.asmx, чтобы у нас была возможность видеть метод GetTutorialService с правой стороны. Здесь TutorialService.asmx — это имя нашего файла Visual Studio .Net, который содержит код для нашего веб-сервиса.
- Затем мы увидим наш веб-метод, который мы использовали в нашем веб-сервисе, известном как «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(); } } }
Объяснение кода: —
- Первая часть заключается в выборе файла Program.cs. Это основной файл, который создается Visual Studio при создании консольного приложения. Этот файл — то, что выполняется, когда выполняется консольное приложение (в нашем случае демонстрационное приложение).
- Затем мы создаем переменную под названием «клиент», которая будет установлена на экземпляр нашей ссылки на сервис, который был создан на более раннем этапе. В нашем случае ссылка на службу — «Guru99Webservice.Guru99WebserviveSoapClient ()».
- Затем мы вызываем наш веб-метод GetTutorialService в веб-службе TutorialService. Помните, что наш метод GetTutorialService принимает целочисленный параметр, поэтому мы просто передаем целочисленный параметр в веб-метод.
- Эта последняя строка предназначена только для того, чтобы экран журнала консоли оставался активным, чтобы мы могли просматривать результаты. Эта команда будет просто ждать некоторого ввода от пользователя.
Вывод
Если все вышеперечисленные шаги выполнены и DemoApplication запущен, будут отображены следующие выходные данные.
Из этого вывода мы ясно видим, что DemoApplication вызывает наш веб-сервис и что строка, возвращенная веб-сервисом, отображается в нашем журнале консоли.
Резюме
- Полная форма WSDL — язык описания веб-сервисов.
- Документ WSDL — это документ, который используется для описания веб-службы. Это важно для любого клиентского приложения, чтобы знать, где расположен веб-сервис. Это также позволяет клиентскому приложению понимать методы, доступные в веб-сервисе.
- Файл WSDL позволяет очень легко реализовать веб-сервис на одном языке программирования и вызывать его из другого языка программирования.
- Документ WSDL обычно состоит из сообщения. Для каждого веб-метода есть 2 сообщения: одно для ввода, а другое для вывода. Вместе они образуют операцию.
- Файлы языка описания веб-сервисов (расшифровываются как WSDL) обычно создаются в редакторе, который используется для соответствующего языка программирования.
- Мы видели, как мы можем использовать веб-сервис в Visual Studio. Это может быть сделано путем создания другого проекта, который является консольным приложением. Затем, добавив ссылку на сервис, мы можем получить доступ к веб-методам в нашем веб-сервисе.