Skip to content

Latest commit

 

History

History
50 lines (31 loc) · 7.49 KB

veb-servis-ws-web-service.md

File metadata and controls

50 lines (31 loc) · 7.49 KB

Веб-сервис (WS - Web service)

Веб-служба, веб-сервис (англ. web service) - идентифицируемая уникальным веб-адресом (URL-адресом) программная система со стандартизированными интерфейсами. Веб-службы могут взаимодействовать друг с другом и со сторонними приложениями посредством сообщений, основанных на определённых протоколах (SOAP, XML-RPC и т. д.) и соглашениях (REST). Веб-служба является единицей модульности при использовании сервис-ориентированной архитектуры приложения (SOA).

В обиходе веб-сервисами называют услуги, оказываемые в Интернете. В этом употреблении термин требует уточнения, идет ли речь о поиске, веб-почте, хранении документов, файлов, закладок и т. п. Такими веб-сервисами можно пользоваться независимо от компьютера, браузера или места доступа в Интернет/

Если посмотреть на веб-сервисы в разрезе стека сетевых протоколов, мы увидим, что это, в классическом случае, не что иное, как еще одна надстройка поверх протокола HTTP. С другой стороны, если гипотетически разделить Интернет на несколько слоев, мы сможем выделить, как минимум, два концептуальных типа приложений - вычислительные узлы, которые реализуют нетривиальные функции и прикладные веб-ресурсы. При этом вторые, зачастую заинтересованы в услугах первых. Но и сам Интернет - разнороден, т. е. различные приложения на различных узлах сети функционируют на разных аппаратно-программных платформах, и используют различные технологии и языки. Чтобы связать все это и предоставить возможность одним приложениям обмениваться данными с другими, и были придуманы веб-сервисы.

По сути, веб-сервисы - это реализация абсолютно четких интерфейсов обмена данными между различными приложениями, которые написаны не только на разных языках, но и распределены на разных узлах сети.

Архитектура

https://upload.wikimedia.org/wikipedia/commons/thumb/4/4a/Webservices-ru.svg/1416px-Webservices-ru.svg.png

Как показано на рисунке, можно выделить три инстанции, взаимодействующие в рамках веб-службы. Переведем их названия как:

  • заказчик (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 в качестве транспорта.

На самом деле, SOAP произошел от XML-RPC и является следующей ступенью его развития. В то время как REST - это концепция, в основе которой лежит скорее архитектурный стиль, нежели новая технология, основанный на теории манипуляции объектами CRUD (Create Read Update Delete) в контексте концепций WWW.

Отличие сервиса от сервера

Сервис (микросервис) - это программа, размещаемая на сервере, которая предоставляет определенную функцию, находясь по определенному адресу и используя четко определенные интерфейсы и логику. Сегодня это чаще всего интерфейсы API.

Сервер может хостить в себе тысячи сервисов. Впрочем, и один сервис может быть размещен на нескольких серверах. В более широком плане - сервер - это виртуальная машина, которая хостит в себе Apache, IIS и много-много web-сервисов. Еще в более широком плане - это железяка, которая хостит в себе множество виртуалок.

Источники:

Доп. материал: