Альтернативы веб-сокетам в мобильных приложениях?

Типичные схемы проектирования системы для серверных служб, таких как Uber, включают подключение к клиенту прокси-сервера и сервера веб-сокетов.

Мне любопытно, почему для этих современных веб-дизайнов учитываются только веб-сокеты (и длинный опрос). Если требуется служба обновления местоположения из мобильного приложения, которое постоянно отправляет обновления местоположения на сервер, почему бы людям не заблокировать, например, пользовательское соединение tcp или udp между клиентом iOS и сервером?

Tcp-соединение — это то, что веб-сокеты используют под капотом, но с необработанным TCP-соединением у вас есть гораздо более зрелые библиотеки, которые вы можете использовать (Netty, обход ядра, FPGA).

UDP кажется даже лучше, поскольку он не имеет состояния и может восстанавливаться при отключении. Если это односторонний поток обновлений местоположения, он, похоже, отлично подходит для этой цели.

Мысли?


person Fred Wang    schedule 03.09.2020    source источник
comment
Может быть, иметь единый сервер для веб-приложений и нативных приложений.   -  person Liju    schedule 03.09.2020


Ответы (1)


Суть использования веб-сокетов заключается в том, что они хорошо сочетаются с существующими брандмауэрами, прокси-серверами и другими ограничениями. Нередко устройства используются в сетях с ограниченным доступом, которые разрешают доступ только к Интернету и почте. Также приятно, что он также обеспечивает семантику сообщений (TCP — это всего лишь поток байтов) и что поддержка TLS также хорошо интегрирована. В то время как необработанный TCP может иметь меньшие накладные расходы, фактические накладные расходы веб-сокетов довольно малы. И часто накладные расходы на недвоичные полезные нагрузки (например, JSON, XML) намного выше, что делает дополнительные небольшие накладные расходы веб-сокетов неуместными.

person Steffen Ullrich    schedule 03.09.2020
comment
Интересный. Можете ли вы использовать бинарный протокол через веб-сокеты, если хотите? Есть ли причина, по которой вы должны придерживаться JSON или XML? - person Fred Wang; 05.09.2020
comment
@FredWang: можно использовать двоичные протоколы через веб-сокеты. Нет причин придерживаться JSON или XML. Но многие разработчики все же это делают, так как чувствуют себя более комфортно с этими протоколами и знают, как использовать инструменты и библиотеки для обработки этих форматов. - person Steffen Ullrich; 05.09.2020