Являются ли сокетные соединения быстрее, чем http на Blackberry?

Я пишу приложение для Blackberry, которое изначально было реализовано в стандартном J2ME. Сетевое подключение было выполнено с использованием Connector.open("socket://...:80/...") вместо http://

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


person Ed Marty    schedule 13.11.2008    source источник


Ответы (4)


Реализация Blackberry http и https предоставляет больше возможностей для подключения к целевому серверу, чем socket, и, конечно же, реализует за вас весь материал протокола HTTP. Я не проверял их, но есть определенный смысл в том, что прямой TCP через socket в некоторых случаях будет быстрее, особенно если то, что прослушивает порт 80, не является HTTP-сервером (нет служебные данные протокола)

В прошлом у меня были трудности с разными сетевыми провайдерами, некоторым требовалось deviceside=true другим deviceside=false, и не было реального способа узнать, пока не поступил первый звонок в службу поддержки для этой сети.

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

Простите, что я так говорю, но «гладкий индикатор выполнения» — это «позолота лилии» — приятно иметь и смотреть на него, но не критично для функционирования, надежности или устойчивости приложения. Используйте то, что более надежно и уменьшает размер кода - в данном случае, скорее всего, http.

person Ken Gentle    schedule 13.11.2008
comment
Я никогда раньше не слышал фразу «золотить лилию», которая мне нравится. Но в основном моя проблема заключается в том, что строка состояния очень долго ждет в начале, прежде чем данные будут возвращены, а затем очень быстро прогрессирует, как только данные могут быть прочитаны. - person Ed Marty; 13.11.2008
comment
Вы смотрели индикатор выполнения BB Browser? Он начинает двигаться, как только вы нажмете GO, но на самом деле ожидает соединения в этот момент. Он увеличивается порциями (~ 10%?) до середины, затем начинает обновляться с той же скоростью, но постепенно меньшими порциями. - person Ken Gentle; 13.11.2008
comment
В противном случае вы можете попробовать Connecting модальное диалоговое окно во время установления соединения, а затем использовать индикатор выполнения после начала передачи данных. Для установления соединения потребуется некоторое время, и индикатор выполнения не будет двигаться, если он не обновляется каким-либо образом в течение этого периода. - person Ken Gentle; 13.11.2008
comment
Больше похоже на позолоту некрасивой, но функциональной штуки. - person mxcl; 09.03.2009

Поскольку оба работают по сети, я не думаю, что вы можете гарантировать плавный индикатор выполнения. У вас может быть больше шансов на это, если вы напомните человеку оставаться на одном месте, чтобы у вас был шанс на постоянную связь ;)

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

person Brian Lyttle    schedule 13.11.2008

Одно из различий между сокетом и HTTP-соединением на BlackBerry заключается в том, что HTTP-соединения могут прозрачно маршрутизироваться через HTTP-прокси в случае соединений BES и BIS.

person Alexander    schedule 19.11.2008

Теоретически сокеты будут работать быстрее, но тогда вы будете нести ответственность за управление накладными расходами на развертывание собственного протокола (в зависимости от сложности). Хотя сокеты более легкие, я обнаружил, что HTTP и все, что с ним связано, значительно снижает головную боль.

person AtariPete    schedule 03.01.2009