WebSockets - API

API - Определение

API, аббревиатура от Application Program Interface, представляет собой набор процедур, протоколов и инструментов для создания программных приложений.

Некоторые важные функции -

  • API определяет, как компоненты программного обеспечения должны взаимодействовать, и API должны использоваться при программировании компонентов графического пользовательского интерфейса (GUI).

  • Хороший API упрощает разработку программы, предоставляя все строительные блоки.

  • REST, который обычно работает по протоколу HTTP, часто используется в мобильных приложениях, социальных веб-сайтах, инструментах гибридных приложений и автоматизированных бизнес-процессах.

  • Стиль REST подчеркивает, что взаимодействие между клиентами и сервисами улучшается за счет ограниченного количества операций (глаголов).

  • Гибкость обеспечивается за счет распределения ресурсов; их собственные уникальные универсальные идентификаторы ресурсов (URI).

  • REST избегает двусмысленности, потому что каждый глагол имеет определенное значение (GET, POST, PUT и DELETE)

Преимущества Web Socket

Web Socket решает несколько проблем с REST или HTTP в целом -

Двунаправленный

HTTP - это однонаправленный протокол, в котором клиент всегда инициирует запрос. Сервер обрабатывает и возвращает ответ, а затем клиент потребляет его. Web Socket - это двунаправленный протокол, в котором нет предопределенных шаблонов сообщений, таких как запрос / ответ. Либо клиент, либо сервер могут отправить сообщение другой стороне.

Полный дуплекс

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

Одно TCP-соединение

Как правило, новое TCP-соединение инициируется для HTTP-запроса и завершается после получения ответа. Необходимо установить новое TCP-соединение для другого HTTP-запроса / ответа. Для Web Socket соединение HTTP обновляется с использованием стандартного механизма обновления HTTP, и клиент и сервер обмениваются данными через одно и то же TCP-соединение в течение жизненного цикла соединения Web Socket.

На приведенном ниже графике показано время (в миллисекундах), затраченное на обработку N сообщений при постоянном размере полезной нагрузки.

Вот необработанные данные, которые питают этот график -

График и таблица, приведенные выше, показывают, что служебные данные REST возрастают с увеличением количества сообщений. Это верно, потому что многие TCP-соединения должны быть инициированы и завершены, а многие HTTP-заголовки должны быть отправлены и получены.

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

Второй график показывает время, затрачиваемое на обработку фиксированного количества сообщений за счет изменения размера полезной нагрузки.

Вот необработанные данные, которые питают этот график -

Этот график показывает, что дополнительные затраты на обработку запроса / ответа для конечной точки REST минимальны, и большая часть времени уходит на инициирование / завершение соединения и соблюдение семантики HTTP.

Заключение

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

Web Socket - это протокол с отслеживанием состояния, тогда как HTTP - протокол без отслеживания состояния. Соединения через веб-сокеты могут масштабироваться вертикально на одном сервере, тогда как HTTP может масштабироваться горизонтально. Есть некоторые проприетарные решения для горизонтального масштабирования Web Socket, но они не основаны на стандартах. HTTP имеет много других полезных свойств, таких как кеширование, маршрутизация и мультиплексирование. Все это необходимо определить поверх Web Socket.