Отслеживание местоположения в режиме реального времени - программа для Windows или браузер?
Я хочу отслеживать несколько сотен, может быть, несколько тысяч человек в режиме реального времени.
Допустим, аппаратные аспекты разобраны, и я могу получить данные в базу данных.
Теперь я хочу вывести это и показать в режиме реального времени.
Уэээлл... "достаточно реальное" время. Допустим, я хочу нарисовать план здания и построить каждый каждые 1-5 секунд.
(Я мог бы хотеть показывать только определенные "виды" людей одним нажатием кнопки; мне понадобится анализ данных и т. Д., Но давайте придерживаться сценария наихудшего случая).
Я достаточно комфортно отношусь к PHP, хотя и не такого рода вещи. Лично я был бы счастлив с Windows-приложением, написанным на Delphi, но, похоже, сейчас все делается на основе браузера.
Итак, вопрос, я думаю, заключается в том, может ли браузер справиться с этим и есть ли веские аргументы для решения на основе Windows или браузера.
Если браузер может справиться с этим (отображая несколько тысяч точек данных в секунду), и нет никаких убедительных аргументов для окон, то, я думаю, я пойду на браузер и изучу несколько новых приемов. Очевидным преимуществом является то, что я также могу повторно использовать большую часть своего кода для отслеживания транспортных средств на картах Google.
5 ответов
Большая часть вашей работы, вероятно, будет выполнена в вашей пространственно включенной реляционной базе данных. Например, PostGIS может выбирать точки данных в пределах ограничивающего прямоугольника или более сложных пространственных предикатов (ST_Contains, ST_Crosses, ST_Intersects, ST_Touches, ...), а также обычные соединения SQL и условия WHERE. Пространственные выборки должны использовать пространственный индекс, чтобы ускорить процесс.
Если это так, ваше приложение будет в значительной степени презентационным слоем. В этом случае используйте то, что будет проще для вас. Преимущество браузера заключается в том, что по умолчанию это кроссплатформенный клиент-сервер, но это может не иметь значения для вас.
Что касается скорости рендеринга, то это действительно зависит от того, как вы планируете рендерить вашу карту. Для Карт Google доступны скоростные тесты. Тем не менее, я подозреваю, что если вы планируете использовать интерфейс типа карт Google, несколько тысяч точек превратятся в пятно булавок. У вас есть макет интерфейса?
Может быть, это немного устарело, но если вы решите использовать браузер, вы можете предварительно отрендерить точки на изображении и просто показать изображение?
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 server push" данных (в формате XML или JSON), который передает данные с сервера всем подключенным клиентам веб-браузера при каждом изменении данных на сервере. Клиенты могут подписаться на интересующую их информацию.
Сначала вы должны понять, какова цель вашего приложения (и его размер, сколько одновременно работающих клиентов?), А затем решить, подходит ли для него толстый клиент или тонкий / веб-клиент. Затем вы должны проверить, какое приложение может управлять прогнозируемой нагрузкой. Можете ли вы отображать несколько тысяч точек данных каждую секунду или около того с помощью технологии, которой вы владеете, или можете использовать это в свой период? Может ли многопоточность помочь вам использовать современные многоядерные процессоры для достижения вашего результата? Какая технология позволит вам воспользоваться этим?
Если вы будете более довольны одним типом приложения по сравнению с другим, напишите такое приложение. Не делайте что-то браузерным приложением, чтобы сделать его браузерным.