Отслеживание местоположения в режиме реального времени - программа для Windows или браузер? - PullRequest
2 голосов
/ 04 июня 2010

Я хочу отслеживать несколько сотен, может быть, несколько тысяч человек в режиме реального времени.

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

Теперь я хочу вывести его и показать в режиме реального времени.

Уэээлл ... "достаточно реальное" время. Допустим, я хочу нарисовать план здания и построить каждый каждые 1–5 секунд.

(Я мог бы хотеть показывать только определенные «виды» людей одним нажатием кнопки; мне понадобится анализ данных и т. Д., Но давайте придерживаться сценария наихудшего случая).

Мне достаточно комфортно с PHP, но не с такими вещами. Лично я был бы счастлив с Windows-приложением, написанным на Delphi, но тенденция, похоже, заключается в том, чтобы сделать все на основе браузера.

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

Если браузер может справиться с этим (отображая несколько тысяч точек данных в секунду), и нет никаких непреодолимых аргументов для окон, то, я думаю, я пойду на браузер и изучу несколько новых приемов. Очевидным преимуществом является то, что я также могу повторно использовать большую часть своего кода для отслеживания транспортных средств на картах Google.

Ответы [ 5 ]

3 голосов
/ 04 июня 2010

Большая часть вашей работы, вероятно, будет выполняться в вашей пространственно-активной реляционной базе данных. Например, PostGIS может выбирать точки данных в пределах ограничивающего прямоугольника или более сложных пространственных предикатов (ST_Contains, ST_Crosses, ST_Intersects, ST_Touches, ...), а также обычные соединения SQL и условия WHERE. Пространственные выборки должны использовать пространственный индекс, чтобы ускорить процесс.

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

Что касается скорости рендеринга, то она действительно зависит от того, как вы планируете рендерить вашу карту. Для Карт Google доступно тестов скорости . Однако я подозреваю, что если вы планируете использовать интерфейс типа карты Google , несколько тысяч точек превратятся в размытые булавки. У вас есть макет интерфейса?

1 голос
/ 04 июня 2010

WebSockets

Взгляните на HTML5 WebSockets , это новый стандарт для обмена данными между сервером и браузером:

WebSockets - это технология, обеспечивающая для двунаправленного, дуплексного каналы связи, по одному Протокол управления передачей (TCP) сокет, предназначенный для реализации в веб-браузеры и веб-серверы.

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

На странице Википедии перечислены доступные реализации на стороне сервера , включая версии PHP (но не Delphi).

WebSockets не привязаны к JavaScript, на странице websockets.org говорится :

Кроме того, протокол Web Socket может использоваться для поддержки разнообразного набора клиентов (например, JavaScript, Adobe Flex, JavaFX, Microsoft Silverlight, так далее.). Тем не менее, HTML5 спецификация определяет только поддержку JavaScript, который ограничен текстовые протоколы. Служить другим Типы клиентов и поддержка бинарных протоколы, которые вам нужно будет посмотреть внешние предложения.

Данные сообщения могут быть обменены в формате JSON , который поддерживается JavaScript, а также доступен для Delphi (как реализации с открытым исходным кодом, такие как SuperObject или lkJSON).


Ajax

Многофункциональные интернет-приложения на основе Ajax для Delphi можно создавать с использованием Intraweb или ExtPascal . ExtPascal - это обертка / привязка для Object Pascal (Delphi, FreePascal / Lazarus) для Ext JS , полной структуры Ajax с графическим интерфейсом и прозрачной поддержкой всех основных веб-браузеров: IE 6+, Firefox 1.5+, Safari 3+, Opera 9+ и Chrome 2+ на любой клиентской платформе (ПК, смартфоны, iPhone, КПК и т. Д.). Демо-приложения онлайн: FishFacts , подробнее .

Ajax Push (он же Reverse Ajax / Comet ) предлагает " HTTP-сервер push " данных (в формате XML или JSON), который передает данные из сервер для всех подключенных клиентов веб-браузера при изменении данных на сервере. Клиенты могут «подписаться» на интересующую их информацию.

1 голос
/ 04 июня 2010

Может быть, это немного устарело, но если вы решите использовать браузер, вы можете предварительно визуализировать точки на изображении и просто показать изображение?

1 голос
/ 04 июня 2010

Сначала вы должны понять, какова цель вашего приложения (и его размер, сколько одновременных клиентов?), А затем решить, подходит ли толстый клиент или тонкий / веб-клиент лучше всего. Затем вы должны проверить, какое приложение может управлять прогнозируемой нагрузкой. Можете ли вы отображать несколько тысяч точек данных каждую секунду или около того с помощью технологии, которой вы владеете, или можете использовать это в свой период? Может ли многопоточность помочь вам использовать современные многоядерные процессоры для достижения вашего результата? Какая технология позволит вам воспользоваться ею?

1 голос
/ 04 июня 2010

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

...