Урок 1 из 0
В процессе

Web сервисы. JSON и XML

          Согласно википедии веб-сервис (англ. web service) – идентифицируемая веб-адресом программная система со стандартизированным интерфейсом.

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

Обычно веб-сервисы работают поверх протокола HTTP или протокола более высокого уровня. Веб-сервис — просто адрес, ссылка, обращение к которому позволяет получить данные или выполнить действие.

Чтобы понять для как работают веб-сервисы стоит для начала составить представление о работе интернета в целом.

Интернет, как и любая другая сеть построена на принципе запрос-ответ. Клиент отправляет запрос на сервер, он его обрабатывает и затем даёт ответ клиенту.

Изначально интернет состоял только из обычных html страниц и по современным меркам выглядел крайне скромно. Но со временем появилось огромное множество различных языков программирования и протоколов, работающих по верх стандартного html.

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

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

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

Такая система очень упрощает создание новых веб-приложений и сайтов, так как можно не задумываться о поддержке сразу множества устройств, а реализовать универсальное решение сразу для всех.

Веб-сервисы чаще всего используются для:

  • Решения повторяющихся изо дня в день операций (поисковые запросы, посмотреть пробки)
  • Решения вопроса несовместимости данных приложений, если, например, приложения написаны на разных языках.
  • Для обеспечения кроссплатформенности.

Для работы веб-сервисы чаще всего используют XML или JSON.

          XML – аббревиатура от англ. eXtensible Markup Language (пер. расширяемый язык разметки). Его синтаксис похож на язык веб разметки HTML, но отличается тем, что является самоопределяемым, то есть в нем почти нет предопределённых тегов. Поэтому он используется не для отображения данных, а для их хранения.

Один из протоколов передачи данными между сервисами является SOAP (от англ. Simple Object Access Protocol — простой протокол доступа к объектам) — протокол обмена структурированными сообщениями в распределённой вычислительной среде. Протокол используется для обмена произвольными сообщениями в формате XML, а также для вызова процедур.

Его особенности:

  • SOAP рекомендован W3C (англ. World Wide Web Consortium, W3C)  – организация, разрабатывающая и внедряющая технологические стандарты для Всемирной паутины).
  • Собственный формат отправки сообщений.
  • Гибок
  • Широкая поддержка в продуктах Microsoft.

Существенный недостаток этого протокола — это большой объем передаваемых данных и сложность чтения этих данных из-за большого количества тегов.

Пример SOAP запроса:

Пример SOAP ответа:

Любой SOAP запрос должен состоять из четырех частей:

  • SOAP Envelope Element – Обязательный элемент SOAP Envelope является корневым элементом сообщения SOAP. Этот элемент определяет документ XML как сообщение SOAP.
  • Header – необязательный элемент — заголовок. Как и в других протоколах, блоки заголовка должны содержать информацию, оказывающую влияние на обработку полезной информации. Таким образом, это подходящее место для размещения чего-то, вроде элемента credentials, который помогает контролировать доступ к операции
  • Body – основной элемент, содержит основную информацию сообщения. Обязательный.
  • Fault – элемент, содержащий информацию об ошибках, возникающих в процессе обработки сообщения. Необязательный.

Другим широко используемым способом настройки веб-сервисов является REST.

REST (сокр. от англ. Representational State Transfer — «передача состояния представления») — архитектурный стиль взаимодействия компонентов распределённого приложения в сети.

В отличие от SOAP, REST не подкреплен официальным стандартом. Фактически, он основывается на соглашениях. Веб-сервис, построенный с учетом всех требований и ограничений архитектурного стиля, можно назвать RESTful веб-сервисом.

REST не использует конвертацию данных при передаче, данные передаются в исходном виде — это снижает нагрузку на клиент веб-сервиса, но увеличивает нагрузку на сеть. Управление данными происходит с помощью методов HTTP:

  • GET — получить данные;
  • POST — добавить данные;
  • PUT — изменить данные;
  • DELETE — удалить данные.

Использование этих методов позволяет реализовать типичный CRUD (Create/Read/Update/Delete) для любой информации. Но это лишь соглашение: часто используются только 2 метода: GET для получения и POST для всего остального. Разобраться поможет такое понятие, как REST-Patterns. Паттерны связывают HTTP методы с тем, что они делают.

Особенности REST:

  • Клиент-серверная архитектура
  • Не имеет состояния (сервер не сохраняет состояния клиента)
  • Использование кэша (ответ сервера может быть кэширован)
  • Многоуровневая архитектура
  • Единый интерфейс (к примеру для получения каталог товаров вы используете URL вида: http://site.com/v1/catalog, а для получения информации о конкретном товаре URL будет: http://site.com/v1/catalog /10)

Пример REST запроса:

Пример REST ответа:

 

Вопрос “Какой способ реализации использовать?” необходимо рассматривать в контексте реализуемой системы и ее ограничений. Обычно, SOAP используется в крупных корпоративных системах со сложной логикой, когда требуются четкие стандарты, подкрепленные временем. XML-RPC, пожалуй, устарел и не имеет смысла ввиду наличия собрата JSON-RPC. RPC-протоколы подойдут для совсем простых систем с малым количеством единиц информации и API-методов.

Если же вы разрабатываете публичное API и логика взаимодействия во многом покрывается четверкой методов CRUD — смело выбирайте REST. Он наиболее популярен в WEB. Яндекс, Google и другие используют именно его для своего API.