Веб-сервіс (WS - Web Service)
Last updated
Last updated
Веб-служба, веб-сервіс (англ. web service) - програмна система зі стандартизованими інтерфейсами, що ідентифікується унікальною веб-адресою (URL-адресою). Веб-служби можуть взаємодіяти один з одним і з іншими програмами за допомогою повідомлень, заснованих на певних протоколах (SOAP, XML-RPC і т. д.) та угодах (REST). Веб-служба є одиницею модульності при використанні сервіс-орієнтованої архітектури програми (SOA).
В побуті веб-сервісами називають послуги, що надаються в Інтернеті. У цьому вживанні термін вимагає уточнення, чи йдеться про пошук, веб-пошту, зберігання документів, файлів, закладок тощо.
Якщо подивитися на веб-сервіси у розрізі стека мережевих протоколів, ми побачимо, що це, в класичному випадку, не що інше, як ще одна надбудова поверх протоколу HTTP. З іншого боку, якщо гіпотетично розділити Інтернет на кілька шарів, ми зможемо виділити, як мінімум, два концептуальні типи додатків - обчислювальні вузли, які реалізують нетривіальні функції та прикладні веб-ресурси. При цьому другий, найчастіше зацікавлений у послугах перших. Але і сам Інтернет - різнорідний, тобто різні програми на різних вузлах мережі функціонують на різних апаратно-програмних платформах, і використовують різні технології та мови. Щоб пов'язати все це і надати можливість одним додаткам обмінюватися даними з іншими, були придумані веб-сервіси.
По суті, веб-сервіси - це реалізація абсолютно чітких інтерфейсів обміну даними між різними додатками, які написані не лише різними мовами, а й розподілені різними вузлами мережі.
Архітектура
Як показано на малюнку, можна виділити три інстанції, які взаємодіють у рамках веб-служби. Перекладемо їх назви як:
замовник (service requester);
виконавець (service provider);
каталог (Service Broker).
Коли службу розроблено, виконавець реєструє її в каталозі, де її можуть знайти потенційні замовники. Замовник, знайшовши в каталозі відповідну службу, імпортує звідти її WSDL-специфікацію та розробляє відповідно до неї своє програмне забезпечення. WSDL описує формат запитів та відповідей, якими обмінюються замовник та виконавець у процесі роботи.
Для забезпечення взаємодії використовуються такі стандарти/протоколи:
SOAP (Simple Object Access Protocol) - це трійка стандартів SOAP/WSDL/UDDI;
REST (Representational State Transfer) - архітектурний стиль взаємодії комп'ютерних систем у мережі, заснований на методах протоколу HTTP;
UDDI – застарів;
XML-RPC (XML Remote Procedure Call) - застарілий;
JSON-RPC (JSON Remote Procedure Call) – більш сучасний аналог XML-RPC. Основна відмінність – дані передаються у форматі JSON;
Спеціалізовані протоколи для конкретного типу завдань, такі як GraphQL;
Менш поширений, але більш ефективний gRPC, що передає дані в бінарному вигляді та використовує HTTP/2 як транспорт.
Відмінність сервісу від сервера
Сервіс (мікросервіс) - це програма, що розміщується на сервері, яка надає певну функцію, перебуваючи за певною адресою та використовуючи чітко визначені інтерфейси та логіку. Сьогодні це найчастіше інтерфейси API.
Сервер може хостити тисячі сервісів. Втім, і один сервіс може бути розміщений на кількох серверах. У ширшому плані - сервер - це віртуальна машина, яка хостить у собі Apache, IIS і багато-багато web-сервісів. Ще в ширшому плані - це залізяка, яка хостить у собі безліч віртуалок.
Джерела:
Дод. матеріал:
Насправді, SOAP походить від XML-RPC і є наступним ступенем його розвитку. В той час, як REST - це концепція, в основі якої лежить скоріше архітектурний стиль, ніж нова технологія, заснована на теорії маніпуляції об'єктами CRUD (Create Read Update Delete) у контексті концепцій .