Підручник WSDL: веб-сервіси Descriptіонна мова з прикладом
Що таке WSDL?
Web-сервіси Descriptіонна мова (WSDL) — це файл на основі XML, який в основному повідомляє клієнтській програмі, що робить веб-служба. Файл WSDL використовується для короткого опису того, що робить веб-служба, і надає клієнту всю інформацію, необхідну для підключення до веб-служби та використання всіх функцій, які надає веб-служба.
У цьому підручнику ми збираємося зосередитися на останньому пункті, який є найважливішою частиною веб-служб, і це WSDL або мова опису веб-служб.
Файл WSDL використовується для короткого опису того, що робить веб-служба, і надає клієнту всю інформацію, необхідну для підключення до веб-служби та використання всіх функцій, які надає веб-служба.
Структура документа WSDL
Документ WSDL використовується для опису веб-сервісу. Цей опис необхідний, щоб клієнтські програми могли зрозуміти, що насправді робить веб-служба.
- Файл WSDL містить розташування веб-служби та
- Методи, які надає веб-служба.
Сам файл WSDL може виглядати дуже складним для будь-якого користувача, але він містить усю необхідну інформацію, яка потрібна будь-якій клієнтській програмі для використання відповідної веб-служби.
Нижче наведено загальну структуру файлу WSDL
- Визначення
- TargetПростір імен
- Типи даних
- повідомлення
- Тип порту
- палітурки
- обслуговування
Одна ключова річ, яку тут слід зауважити, це визначення повідомлень, яке передається протокол 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 містить такі основні частини
- Кнопка використовується для визначення всіх складних типів даних, які використовуватимуться в повідомленні, яким обмінюються клієнтська програма та веб-служба. Це важливий аспект клієнтської програми, тому що якщо веб-служба працює зі складним типом даних, то клієнтська програма повинна знати, як обробляти складний тип даних. Такі типи даних, як float, числа та рядки, є простими типами даних, але можуть бути структуровані типи даних, які можуть надаватися веб-службою.
Наприклад, може існувати тип даних під назвою EmployeeDataType, який може мати 2 елементи під назвою «EmployeeName» рядкового типу та «EmployeeID» типу номер або ціле число. Разом вони утворюють структуру даних, яка потім стає складним типом даних. - Кнопка тег використовується для визначення повідомлення, яким обмінюються клієнтська програма та веб-сервер. Ці повідомлення пояснюють операції введення та виведення, які може виконувати веб-служба. Прикладом повідомлення може бути повідомлення, яке приймає EmployeeID працівника, а вихідним повідомленням може бути ім’я працівника на основі наданого EmpoyeeID.
- Кнопка тег використовується для інкапсуляції кожного вхідного та вихідного повідомлення в одну логічну операцію. Отже, може бути операція під назвою «GetEmployee», яка поєднує вхідне повідомлення про прийняття EmployeeID від клієнтської програми та надсилання EmployeeName як вихідне повідомлення.
- Кнопка тег використовується для прив’язки операції до певного типу порту. Це робиться для того, щоб, коли клієнтська програма викликає відповідний тип порту, вона матиме доступ до операцій, пов’язаних із цим типом порту. Типи портів схожі на інтерфейси. Отже, якщо клієнтській програмі потрібно використовувати веб-службу, їм потрібно використовувати зв’язувальну інформацію, щоб переконатися, що вони можуть підключитися до інтерфейсу, наданого цією веб-службою.
- Кнопка тег — це назва самої веб-служби. Спочатку, коли клієнтська програма звертається до веб-служби, вона буде робити це шляхом виклику назви веб-служби. Наприклад, веб-служба може бути розташована за такою адресою, як http://localhost/Guru99/Tutorial.asmx . Сервісний тег фактично матиме визначену URL-адресу http://localhost/Guru99/Tutorial.asmx, який фактично повідомляє клієнтській програмі, що в цьому місці доступна веб-служба.
Чому WSDL
Веб-сервіс є важливим компонентом у створенні сучасних веб-додатків. Їх основна мета — дозволити багатьом програмам, створеним на різних мовах програмування, спілкуватися між собою. Наприклад, веб-додаток .Net може спілкуватися з a Java програму через веб-службу.
Веб-сервіс має такі ключові функції
- Він створений з використанням мови програмування XML. Майже всі сучасні технології, такі як .Net і Java мають відповідні команди, які мають можливість працювати з XML. Тому XML було прийнято як найбільш підходящу мову для створення веб-сервісів.
- Веб-служби спілкуються через HTTP. HTTP — це протокол, який використовується всіма веб-додатками. Отже, мало сенс переконатися, що веб-сервіси також мають можливість працювати через протокол HTTP.
- Веб-сервіси відповідають специфікації певної мови. Ця специфікація встановлюється W3C, яка є керівним органом для всіх веб-стандартів.
- Веб-сервіси мають мову опису, відому як WSDL, яка використовується для опису веб-сервісу.
Файл WSDL написаний у звичайному старому форматі XML. Причина того, що він у форматі XML, полягає в тому, що файл можна прочитати будь-якою мовою програмування.
Отже, якби клієнтська програма була написана в .Net, вона зрозуміла б файл XML. Аналогічно, якщо клієнтська програма була написана в Java мовою програмування, тоді він також зможе інтерпретувати файл WSDL.
Файл WSDL – це те, що поєднує все разом. З наведеної вище схеми видно, що ви можете створити веб-службу мовою .Net.
Тож тут реалізується послуга. Якщо у вас не було файлу WSDL і ви хотіли a Java класу для використання веб-сервісу, вам знадобиться багато зусиль у кодуванні, щоб досягти цього.
Але тепер з файлом WSDL у форматі XML, який можна зрозуміти будь-якою мовою програмування, тепер ви можете легко мати Java використовувати веб-службу .Net. Таким чином, кількість зусиль кодування значно зменшується.
Частина повідомлення WSDL
WSDL складається з розділу під назвою «повідомлення», який позначається символом елемент.
Цей елемент в основному використовується для опису даних, якими обмінюються веб-служба та клієнтська програма.
Кожна веб-служба завжди матиме 2 типи повідомлень,
- Один призначений для введення веб-служби, а інший для виведення веб-служби.
- Вхідні дані використовуються для опису параметрів, які приймає веб-служба. Це важливий аспект клієнтської програми, щоб вона знала значення, які потрібно надіслати як параметри до веб-служби.
- Інший тип повідомлення – вихідне повідомлення, яке повідомляє, які результати надає веб-служба.
Кожне повідомлення, у свою чергу, матиме a елемент, який використовується для опису параметра, що використовується вхідним і вихідним повідомленнями.
Нижче наведено простий приклад того, як виглядає повідомлення для веб-служби. Функціональність веб-сервісу полягає в тому, щоб надати ім’я «Навчального посібника», коли «Ідентифікатор навчального посібника» надсилається як параметр веб-сервісу.
- Як ми бачимо, веб-служба має 2 повідомлення, одне для введення, а інше для виведення.
- Вхідне повідомлення відоме як TutorialNameRequest, яке має один параметр під назвою TutorialID. Цей параметр належить до типу number, який визначається типом xsd:number
- Вихідне повідомлення відоме як TutorialNameResponse, яке має один параметр під назвою TutorialName. Цей параметр має тип string, який визначається типом xsd:string
Прив'язка типу порту
Порти використовуються в WSDL для визначення однієї повної операції, яку пропонує веб-служба.
У попередній темі ми побачили, що наш веб-сервіс надав 2 повідомлення: одне для введення під назвою «TutorialNameRequest», а інше для виведення під назвою «TutorialNameResponse». Форма вхідного та вихідного повідомлень разом відома як одна повна операція.
WSDL надає елемент під назвою який використовується для визначення операцій, які надає веб-служба.
Отже, у нашому прикладі вище ми можемо відзначити наступне:
- Назва типу порту, який інкапсулює операцію, дається як «Tutorial_PortType».
- Сама операція називається «Навчальний посібник». Отже, наша операція в основному надає TutorialName, якщо TutorialID задано як вхідний параметр.
- Далі 2 наших повідомлення, одне для введення, а інше для виведення, які формують нашу операцію
На додаток до елемент, є також елемент, який використовується для визначення способу передачі повідомлень.
- Наведений вище приклад показує, що зв’язування складається з назви зв’язування, яке в нашому випадку вказано як «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) На цьому етапі
- Обов’язково спочатку виберіть Visual C# Windows варіант. Потім виберіть варіант створення консольної програми.
- Дайте назву своєму проекту, який у нашому випадку було дано як «Демододаток».
Після того, як ви натиснете кнопку OK на екрані вище, ви зможете побачити проект у Провіднику рішень у Visual Studio.
Крок 4) На цьому кроці ви встановлюєте програму DemoApplication Console як стартовий проект. Це робиться для того, щоб ця програма запускалася першою під час виконання всього проекту Visual Studio. Ця консольна програма, у свою чергу, викличе веб-службу, яка буде автоматично запущена Visual Studio.
Щоб завершити цей крок, клацніть правою кнопкою миші проект DemoApplication і виберіть опцію «Установити як проект StartUp».
Крок 5) Наступним кроком буде додавання посилання на сервіс нашого “Guru99Webservice” до нашої консольної програми. Це робиться для того, щоб DemoApplication міг посилатися на веб-службу та всі веб-методи у веб-службі.
Для цього клацніть правою кнопкою миші файл проекту DemoApplication і виберіть пункт меню Add->Service Reference.
Крок 6) На цьому кроці ми надамо різні значення, необхідні для додавання нашого посилання на службу
- Спочатку нам потрібно вибрати наш варіант відкриття. Ця опція автоматично підбере файл WSDL для нашої веб-служби TutorialService.
- Далі ми повинні дати ім’я для нашої служби. У нашому випадку ми даємо йому назву Guru99Webservice.
- Потім нам потрібно розгорнути опцію TutorialService.asmx, щоб ми могли бачити метод «GetTutorialService» праворуч. Тут TutorialService.asmx — це назва нашого файлу Visual Studio .Net, який містить код нашої веб-служби.
- Тоді ми побачимо наш веб-метод, який ми мали в нашому веб-сервісі, відомий як “GetTutorialService”
Коли ми натискаємо кнопку «OK», увесь необхідний код для доступу до цієї веб-служби буде додано до нашої програми DemoApplication Console, як показано нижче.
На знімку екрана видно, що «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 є веб-сервіси Descriptіонна мова
- Документ WSDL — це документ, який використовується для опису веб-сервісу. Це ключ до будь-якої клієнтської програми, щоб знати, де знаходиться веб-служба. Це також дозволяє клієнтській програмі розуміти методи, доступні у веб-службі.
- Файл WSDL дозволяє дуже легко реалізувати веб-службу на одній мові програмування та викликати її з іншої мови програмування.
- Документ WSDL зазвичай складається з повідомлення. Для кожного веб-методу є 2 повідомлення, одне для введення, а інше для виведення. Разом вони утворюють операцію.
- Web-сервіси DescriptФайли ion Language (розшифровується як WSDL) зазвичай створюються в редакторі, який використовується для відповідної мови програмування.
- Ми побачили, як ми можемо використовувати веб-сервіс у Visual Studio. Це можна зробити, створивши інший проект, який є консольним додатком. Потім, додавши посилання на службу, ми зможемо отримати доступ до веб-методів у нашій веб-службі.