Удачное описание веб-сервисов в этой
статье.
Исходя из этого описания, в общих чертах я бы выделил несколько пунктов:
-
веб-сервисом можно считать часть комплекса или сам комплекс программного обеспечения, доступный для вызова по Интернет или в локальной сети;
-
формат взаимодействия сообщений может быть основан на SOAP или WCF протоколе на базе XML;
-
возможен вариант архитектуры веб-сервиса с подходом архитектуры REST.
Удобно рассматривать и реализовывать веб-сервисы как приложение, доступное для вызова по протоколу HTTP в сети Интернет и в локальной сети.
Веб-сервисы глубоко проникли в нашу жизнь. Множество банковских операций реализовано на основе веб-сервисов: они используются в любом сайте, использующем платежи онлайн по банковской
карте. Системы денежных переводов также основаны на базе веб-сервисов - это и SberPay и СБП.
Веб-сервисы на базе SOAP и WCF протоколов
В случае SOAP И WCF веб-сервисов передача сообщений происходит в формате XML в зависимости от выбранного протокола.
Характеристики такого взаимодействия следующие:
-
взаимодействие происходит только посредством метода POST;
-
само сообщение универсально кодируется на основании спецификации выбранного протокола;
-
переданное сообщение жестко сериализуется в XML, пригодный для передачи по протоколу HTTP.
Фактически, формируется XML, строго соответствующий схеме XML, которую указывает хост веб-сервисов, который впоследствии пересылается на хост веб-сервисов POST-методом.
К плюсам можно отнести универсальность - любой объект для передачи в сообщении кодируется универсальным способом в соответствии с WSDL-схемой веб-сервиса.
Из минусов можно указать на сложность конфигурации.
При создании агента для доступа к SOAP или WCF веб-сервису требуется создать достаточно большую инфраструктуру с объектами высокого уровня, которые будут реализовывать все
низкоуровневые операции сериализации и десериализации передаваемых сообщений.
Если вы подключаетесь к стороннему WCF веб-сервису, размещенного в Интернет за пределами вашей локальной сети и в вашей сети работает firewall / антивирус / включен VPN-тоннель, то
подключение может занимать продолжительное время.
Веб-сервисы в архитектуре REST
REST веб-сервис является не протоколом, а архитектурным приёмом, описывающим правило взаимодействия с серверами.
Фактически, он является соглашением, по которому осуществляется передача сообщений. На практике это означает описание входных и выходных объектов для веб-сервиса.
Способом передачи данных может быть любой, указанный в HTTP-протоколе - GET, POST, PUT и любой другой из множества доступных.
Входным параметром может быть любой набор примитивных значений - строки, числа, даты.
Выходным параметром может быть любое значение, доступное для передачи по протоколу HTTP - любой массив данных.
Это может быть XML, JSON-объект, бинарный файл.
Характеристики взаимодействия следующие:
-
неограниченные возможности по формированию параметров запроса - это могут быть любые значения примитивных типов или объемные JSON-структуры;
-
взаимодействие может проходить по любому методу передачи HTTP-протокола - POST, GET, PUT и любому другому;
-
ограничения сетевого взаимодействия зависят от ограничений на HTTP-трафик, в большинстве случаев будет достаточно взаимодействия
с сервером по HTTP-протоколу и открытия сетевых портов по-умолчанию.
Из плюсов можно выделить неограниченные возможности по формированию запросов, простоту настройки сетевого взаимодействия.
В качестве условного минуса можно назвать необходимость вхождения в тему описания нотации JSON, но практика показывает, что это небольшое препятствие.
Для REST-сервисов можно использовать множество утилит, позволяющих формировать запросы к REST веб-сервису через отдельный интерфейс.
Например, удачной реализацией является утилита
PostMan.
Также существует open source проект
Swagger,
позволяющий к проекту с REST веб-сервисом добавить оболочку, позволяющую посмотреть спецификацию запрашиваемых и возвращаемых объектов, предоставляющую возможность прямого вызова
методов REST веб-сервиса без установки какой-либо оболочки.
Наличие такой особенности позволяет оценить и протестировать функционал REST веб-сервисов как отдельное приложение.
При разработке frontend-приложения появляется возможность тестировать не только приложение целиком, но и его серверную часть.
Для веб-сервисов, работающих по протоколу SOAP тоже существуют клиенты для прямого вызова методов, но их использование достаточно затруднено.
Таким образом, если возникает вопрос выбора архитектуры веб-сервисов, то хочется проголосовать за выбор REST веб-сервисов по причине простоты их реализации,
распространения и доступа.