Учебники

WebSockets — API

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

Некоторые важные особенности —

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

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

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

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

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

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

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

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

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

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

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

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

Преимущества веб-сокета

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.

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

Websockets Отдых

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

Постоянный номер

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

Заключение

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

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