Крім wcb-додатків іншим важливим видом програмного забезпечення, використовуваного в web-мережі, є web-сервіси (web services). Вони являють собою набори методів, які можна викликати на виконання із заданими параметрами за допомогою НТТР- запитів, а результати їх виконання отримувати у вигляді НТТР-відповідей.
Web-сервіси підтримуються, як і web-додатки, web-серверами і призначені для використання будь-якими програмами, які можуть формувати правильні HTTP-запити і розуміти отримані НТТР- відповіді, але не користувачами (людьми), т. К. Вони не мають графічного призначеного для користувача інтерфейсу. Такими програмами можуть бути web- додатки, інші web-сервіси або навіть локальні програми.
Web-сервіси, так само як і web-додатки, повністю реалізуються з використанням технологій і стандартів web-мережі. Вони мають URL-адреси, за допомогою яких до них можна звертатися. Для передачі запиту на виконання методів web-сервісів і повернення результатів використовується мова XML. На рис. 2.4 показана загальна схема взаємодії web-додатки з web-сервісом.
Робота web-сервісів грунтується на використанні даних, описаних на мові XML. Такі XML-дані повинні складатися відповідно до протоколу - SOAP (Simple Object Access Protocol), який надає стандартний спосіб опису повідомлень в XML-форматі. Він дозволяє розробникам описувати, що може виконати сервіс, і робить надану функціональність доступною іншим програмам.
Мал. 2.4. Загальна схема взаємодії додатків з web-сервісами
Прикладом простого web-сервісу може бути сервіс Math, який включає дві операції: додавання (Add) і віднімання (Subtract):
public int Add (int x, int y) {return x + y;}
public void Subtract (int x, int y, out int z) {z = xy; return z;}
XML-дані, сформовані відповідно до протоколу SOAP в якості кореневого елемента, використовують елемент "Envelope", в який включені два піделементи - "Header» (не обов'язковий) та "Body". В елементі "Header" описується загальна інформація, пов'язана із запитом або відповіддю. А елемент "Body" в запиті містить інформацію про викликається метод (наприклад: Subtract) і переданих йому параметрах (х і у). Складений таким чином XML-документ передається за допомогою протоколів HTTP або SMTP.
При використанні протоколу HTTP даний XML-документ (Envelope) включається в тіло HTTP-запиту, яке слід через порожній рядок після рядка запиту (наприклад, POST / services НТТР / 1.1) та відповідних заголовків, як показано на рис. 2.5.
Мал. 2.5. Приклад HTTP-запиту до web-cepвucy з використанням SOAP
Мал. 2.6. Приклад HTTP-відповіді від web-cepвuca з використанням SOAP
Мал. 2.7. Фрагмент WSDL-описі web-cepвuca Math
Після отримання даного запиту web-сервер передає управління середовищі виконання, яка викликає необхідний метод і передає йому отримані параметри. Після виконання даного методу формується XML-документ, що містить результати роботи методу, який оформляється відповідно до протоколу SOAP.
На рис. 2.6 показаний HTTP-відповідь, що містить результати виконання web-сервісу (Subtract), який виконує віднімання значень перших двох параметрів і повертає результат в третьому параметрі. Так як ці дані передаються в HTTP-відповіді, то вони включаються після рядка стану і відповідних заголовків.
Для того щоб користувачі сервісів (наприклад, web- додатки) могли правильно складати запити і розуміти відповіді, web-сервіси також є відповідальними за надання спеціальних описів, складених на мові WSDL (Web Services Definition Language), який також використовує XML-формат. Мова WSDL дозволяє розробникам описувати синтаксис виклику web-методів сервісу. За допомогою WSDL можна описати різні елементи web- сервісу, наприклад, такі, як типи даних (<wsdl: types>), повідомлення (<wsdl: message>), типи портів (<wsdl: port>), зв'язування (<wsdl: binding>) і сам сервіс (<wsdl: service>).
Для отримання WSDL-документа з описом web-сервісу потрібно відправити йому HTTP-запит <URL-адресу сервісу>? WSDL. В такому WSDL-документі описується все, що клієнту необхідно для організації роботи з web-сервісом (рис. 2.7).
Якщо Ви помітили помилку в тексті позначте слово та натисніть Shift + Enter