Отправить данные на веб-сервер из C #, какой самый эффективный способ? - PullRequest
2 голосов
/ 07 мая 2010

Я отправляю GPS-координаты с мобильного телефона Windows на веб-сервер, используя основную программу, написанную на C #. Проблема в том, что тарифный план на телефоне позволяет только 4 МБ в месяц. Я планировал обновлять местоположение каждые 10 секунд.

В настоящее время я просто создаю веб-запрос каждые 10 секунд на страницу php на сервере, и координаты передаются в URL, страница php сохраняет их в базе данных.

Это генерирует около 1 КБ данных на запрос, с такой скоростью я достигну своего лимита данных менее чем за день.

Есть ли более эффективный способ сделать это?

Обновление:

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

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

Ответы [ 5 ]

8 голосов
/ 07 мая 2010

Как насчет отправки обновлений только тогда, когда пользователь переместился на определенное расстояние от предыдущего значения?

Нет смысла многократно отправлять одни и те же координаты каждые 10 секунд в течение ночи, например, когда телефон находится у кровати.

4 голосов
/ 07 мая 2010

1 запрос каждые 10 секунд = 6 запросов / мин = 360 запросов / час = 8640 запросов / день = ~ 260 тысяч запросов / месяц

4MB / 260k ~ = 15

То есть, чтобы остаться ниже предела, среднее количество сообщений на сервере должно составлять 15 байт? Не представляется возможным.

Даже если вы опустились до уровня сокета (что вам, вероятно, все равно следует), простой ping отправляет 84 байта, так что даже это ограничит вас раз в минуту.

2 голосов
/ 07 мая 2010

Вы можете использовать SMS (текстовые сообщения) для отправки координат с телефона на сервер.Безлимитные текстовые сообщения обычно намного дешевле, чем тарифный план.

Вы также можете сохранять координаты на своем телефоне и отправлять их партиями (вместо отправки одной координаты каждые 10 секунд).Вы можете сохранить координаты GPS с двумя поплавками или 8 байтами.По одной координате каждые 10 секунд, что составляет около 2 МБ в месяц.Если вы сделаете пакеты достаточно большими, чтобы накладные расходы на связь были маленькими по сравнению с размером данных, вы сделаете это ниже предела в 4 МБ.

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

1 голос
/ 07 мая 2010

Где вы находитесь в мире, какие тарифные планы доступны? Конечно, было бы легче получить менее смешной план данных, чем попытаться вписать свою концепцию в такой жалкий план данных? В Великобритании, где я живу, 500 МБ - 1 ГБ мобильных приложений для передачи данных стоят примерно 5 фунтов в месяц сверх вашей обычной стоимости телефонного контракта.

0 голосов
/ 07 мая 2010

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

Вы можете добавить клиенту некоторую логику, которая сможет рассчитать расстояние до последних мест.Только если оно превышает определенный порог, вы отправляете обновление.Если вы находитесь в одном и том же месте (например, дома, спите, несколько часов в день), вы можете отправить «здесь, позиция по-прежнему (почти) такая же, как в прошлом» - сообщение, которое очень короткое в данных все Х минут.Хотя X - это возрастающее значение, которое зависит от того, как долго было последнее изменение в позиции.Например, 5 минут, 15 минут, 30 минут, 1 час и т. Д. Это также сэкономит много трафика, и если позиция снова изменится, вы можете сразу обновить полную координату GPS.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...