Що таке WSDL?
Мова опису веб-служб (WSDL) - це файл на основі XML, який в основному повідомляє клієнтській програмі, що робить веб-служба. Файл WSDL використовується для короткого опису того, що робить веб-служба, і надає клієнту всю інформацію, необхідну для підключення до веб-служби та використання всіх функціональних можливостей, що надаються веб-службою.
У цьому посібнику ми зупинимось на останньому пункті, який є найважливішою частиною веб-служб, а саме на WSDL або мові опису веб-служб.
Файл WSDL використовується для короткого опису того, що робить веб-служба, і надає клієнту всю інформацію, необхідну для підключення до веб-служби та використання всіх функціональних можливостей, що надаються веб-службою.
У цьому підручнику ви дізнаєтесь-
- Структура документа WSDL
- Елементи WSDL
- Чому WSDL
- Частина повідомлення WSDL
- Прив'язка типу порту
- Створення файлу WSDL
- Публікація прикладу веб-служби
Структура документа WSDL
Документ WSDL використовується для опису веб-служби. Цей опис необхідний, щоб клієнтські програми могли зрозуміти, що насправді робить веб-служба.
- Файл WSDL містить розташування веб-служби та
- Методи, які розкриває веб-служба.
Сам файл WSDL може виглядати дуже складним для будь-якого користувача, але він містить всю необхідну інформацію, яка потрібна будь-якій клієнтській програмі для використання відповідної веб-служби.
Нижче наведено загальну структуру файлу WSDL
- Визначення
- TargetNamespace
- Типи даних
- Повідомлення
- Порттип
- Обв’язки
- обслуговування
Тут слід зауважити одне ключове, що визначення повідомлень, саме те, що передається протоколом SOAP, насправді визначено в документі WSDL.
Документ WSDL фактично повідомляє клієнтській програмі, які типи повідомлень SOAP надсилаються та приймаються веб-службою.
Іншими словами, WSDL - це просто як листівка, яка має адресу певного місця. Адреса містить дані про особу, яка доставила листівку. Отже, таким же чином файл WSDL - це листівка, яка має адресу веб-служби, яка може забезпечити всю функціональність, яку бажає клієнт.
… … … … …
Нижче наведена схема структури файлу WSDL
Елементи WSDL
Файл WSDL містить такі основні частини
-
<Типи> тег використовується для визначення всіх складних типів даних, які будуть використовуватися в повідомленні , яке провадиться між клієнтським додатком і веб - служби. Це важливий аспект клієнтської програми, оскільки якщо веб-служба працює зі складним типом даних, то клієнтська програма повинна знати, як обробляти складний тип даних. Типи даних, такі як плаваюча, цифри та рядки, - це всі прості типи даних, але можуть існувати структуровані типи даних, які можуть надаватися веб-службою.
Наприклад, може існувати тип даних, який називається EmployeeDataType, який може мати 2 елементи, що називаються "EmployeeName" типу рядка і "EmployeeID" номера типу або цілого числа. Разом вони утворюють структуру даних, яка потім стає складним типом даних.
-
<Повідомлення> тег використовується для визначення повідомлення , яке обмінюється між клієнтським додатком і веб - сервера. Ці повідомлення пояснюють операції введення та виведення, які може виконувати веб-служба. Прикладом повідомлення може бути повідомлення, яке приймає EmployeeID працівника, а вихідним повідомленням може бути ім'я працівника на основі наданого EmpoyeeID.
-
тег використовуються для інкапсуляції кожного вхідного і вихідного повідомлення в одну логічну операцію. Отже, може бути операція під назвою "GetEfficiee", яка поєднує вхідне повідомлення про прийняття 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 використовував веб-службу. Отже, кількість зусиль на кодування значно зменшується.
Частина повідомлення WSDL
WSDL складається з розділу, який називається "повідомлення", який позначається елементом <повідомлення> .
Цей елемент в основному використовується для опису даних, якими обмінюються веб-служба та клієнтська програма.
Кожна веб-служба завжди матиме 2 типи повідомлень,
- Один призначений для введення веб-служби, а інший - для виведення веб-служби.
- Вхідні дані використовуються для опису параметрів, які приймає веб-служба. Це важливий аспект клієнтської програми, щоб він знав значення, що надсилаються як параметри веб-службі.
- Інший тип повідомлення - вихідне повідомлення, яке повідомляє, які результати надає веб-служба.
Кожне повідомлення, в свою чергу, матиме елемент
Нижче наведено простий приклад того, як виглядає повідомлення для веб-служби. Функціональність веб-служби полягає у наданні імені "Підручника" після подання "Ідентифікатора підручника" як параметра до веб-служби.
- Як бачимо, веб-служба має 2 повідомлення, одне для введення, а друге для виводу.
- Вхідне повідомлення відоме як TutorialNameRequest, який має один параметр, який називається TutorialID. Цей параметр має номер типу, який вказано типом xsd: число
- Вихідне повідомлення відоме як TutorialNameResponse, яке має один параметр, який називається TutorialName. Цей параметр має тип рядка, який визначається типом 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.
TutorialService
Вищезазначений файл WSDL виглядає дуже залякуючим для будь-якого користувача, ми детально розглянемо різні частини в наступних підручниках, але наразі давайте коротко розглянемо, що насправді робить кожен розділ файлу WSDL
Публікація прикладу веб-служби
Тепер давайте розглянемо приклад того, як ми можемо публікувати веб-службу та споживати її за допомогою Visual Studio.
У цьому прикладі ми створимо веб-службу з одним WebMethod. Цей метод приймає цілочисельний параметр, який називається "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. Потім виберіть варіант створення консольного додатка.
- Укажіть назву для вашого проекту, який у нашому випадку отримав назву "DemoApplication".
Після натискання кнопки ОК на екрані вище ви зможете побачити проект у провіднику рішень у Visual Studio.
Крок 4) На цьому кроці ви встановлюєте програму DemoApplication Console як проект запуску. Це робиться для того, щоб забезпечити перший запуск цієї програми під час запуску всього проекту Visual Studio. Цей консольний додаток, у свою чергу, буде викликати веб-службу, яка автоматично запускається Visual Studio.
Щоб завершити цей крок, клацніть правою кнопкою миші проект DemoApplication і виберіть опцію «Встановити як проект запуску».
Крок 5) Наступним кроком є додавання посилання на послугу нашого "Guru99Webservice" до нашого консольного додатка. Це робиться для того, щоб DemoApplication міг посилатися на веб-службу та всі веб-методи веб-служби.
Для цього клацніть правою кнопкою миші файл проекту DemoApplication і виберіть пункт меню Додати-> Посилання на послугу.
Крок 6) На цьому кроці ми надамо різні значення, необхідні для додавання нашого посилання на послугу
- По-перше, нам потрібно вибрати наш варіант виявлення. Ця опція автоматично завантажить файл WSDL для нашої веб-служби TutorialService.
- Далі ми повинні вказати назву для нашого довідкового центру. У нашому випадку ми даємо йому назву Guru99Webservice.
- Потім нам потрібно розгорнути опцію TutorialService.asmx, щоб ми могли бачити метод "GetTutorialService" праворуч. Тут TutorialService.asmx - це назва нашого файлу Visual Studio .Net, який містить код нашої веб-служби.
- Потім ми побачимо наш веб-метод, який ми мали в нашій веб-службі, відому як "GetTutorialService"
Коли ми натискаємо кнопку «ОК», весь необхідний код для доступу до цієї веб-служби буде доданий до нашої програми 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 є мова опису веб-служб
- Документ WSDL - це документ, який використовується для опису веб-служби. Це важливо для будь-якої клієнтської програми, щоб знати, де знаходиться веб-служба. Це також дозволяє клієнтській програмі зрозуміти методи, доступні у веб-службі.
- Файл WSDL дуже легко реалізує веб-службу на одній мові програмування та викликає її з іншої мови програмування.
- Документ WSDL зазвичай складається з повідомлення. Для кожного веб-методу існує 2 повідомлення, одне - для введення, а друге - для виводу. Разом вони утворюють операцію.
- Файли мови опису веб-служб (розшифровується як WSDL) зазвичай створюються у редакторі, який використовується для відповідної мови програмування.
- Ми побачили, як ми можемо використовувати веб-службу в Visual Studio. Це можна зробити, створивши інший проект, який є консольним додатком. Потім, додавши посилання на послугу, ми можемо отримати доступ до веб-методів у нашій веб-службі.