Domanda

Voglio tenere traccia di un qualche centinaio, forse un paio di migliaia di persone in tempo reale.

diciamo di lasciare che gli aspetti hardware sono allineati fuori e posso ottenere i dati in un database.

Ora, voglio farlo uscire e mostrarlo, in tempo reale.

Weeeell ... tempo "real-basta". Diciamo che voglio disegnare una planimetria di un edificio e la trama tutti ogni 1 a 5 secondi.

(potrei voler mostrare solo alcuni "tipi" di persone al clic di un pulsante, avrò bisogno di datamining, ecc, ma cerchiamo di bastone con il peggiore dei casi).

Sono abbastanza confortevole con PHP, anche se non questo genere di cose. Personalmente sarei più felice con un'applicazione di Windows codificato in Delphi, ma la tendenza sembra essere quello di rendere basato tutto il browser.

Quindi, la domanda, credo che è se un browser in grado di gestire questo e se ci sono argomenti convincenti per una soluzione basata su browser windows-based o.

Se il browser-based in grado di gestire questo (la visualizzazione di alcune migliaia di punti di dati al secondo), e non ci sono argomenti schiaccianti per le finestre allora credo che andrò per il browser-based e imparare alcuni nuovi trucchi. Il vantaggio evidente è che potrei anche riutilizzare gran parte del mio codice per (veicolo) tracciamento su Google Maps.

È stato utile?

Soluzione

La maggior parte del vostro lavoro sarà probabilmente fatto nel vostro database relazionale spazialmente abilitato. Ad esempio, PostGIS possibile selezionare i punti di dati all'interno di un riquadro condizioni o più sofisticati predicati spaziali (ST_Contains, ST_Crosses, ST_Intersects, ST_Touches, ...), così come il solito SQL unisce e dove. seleziona spaziali dovrebbero usare un indice spaziale per le cose di velocità in su.

Se questo è il caso, la vostra applicazione sarà in gran parte essere un livello di presentazione. In questo caso, l'uso qualunque sarà più facile per voi. Il vantaggio di basato su browser, è che è cross-platform client-server di default, ma questo potrebbe non importa a voi.

Per quanto riguarda la velocità di rendering, in realtà dipende da come si sta progettando di rendere la vostra mappa. Ci sono test di velocità disponibile per Google Maps. Tuttavia, ho il sospetto che se si sta progettando una google maps un'interfaccia di tipo diverse migliaia i punti stanno per trasformarsi in una macchia di spilli. Avete un mockup di interfaccia?

Altri suggerimenti

Se saresti più felice con un solo tipo di applicazione rispetto ad un altro, poi scrivere quel tipo di app. Non fare qualcosa di un app del browser solo per fare un'applicazione browser.

In primo luogo si dovrebbe capire che cosa è l'obiettivo della vostra applicazione (e la sua dimensione, il numero di client simultanei?), E poi decidere se un cliente grassi o un sottile / web uno le si addice. Poi si dovrebbe verificare che tipo di applicazione è in grado di gestire il carico di voi previsione. Potresti visualizzare qualche migliaio di datapoint ogni secondo o giù di lì con la tecnologia si master o può nel lasso di tempo? Sarebbe multithreading aiuto di sfruttare processori multicore attuali per ottenere il risultato? Quale tecnologia vi permetterà di trarre vantaggio da esso?

Forse sembra un po 'vecchio cappello, ma se si decide di andare basata su browser, si potrebbe pre-renderizzare i punti da un'immagine e solo mostrare l'immagine?

WebSockets

Date un'occhiata a HTML5 WebSockets , sono un nuovo standard per i dati del server / browser scambio:

WebSockets è una tecnologia che fornisce per il bi-direzionale, full-duplex canali di comunicazione, nel corso di un singolo Transmission Control Protocol (TCP) presa, atto ad essere attuato in server web browser e web.

Il server può spingere nuovi dati al client quando diventa disponibile, eliminando il sovraccarico di richieste di pull client.

La pagina di Wikipedia liste disponibili implementazioni lato server , comprese le versioni di PHP (ma non Delphi).

WebSockets non sono vincolati a JavaScript, la pagina websockets.org dice :

Inoltre, il protocollo Web Socket può essere utilizzato per supportare una serie diversificata dei clienti (ad esempio JavaScript, Adobe Flex, JavaFX, Microsoft Silverlight, eccetera.). Tuttavia, l'HTML5 specifica definisce solo sostegno JavaScript, che è limitata a protocolli basati sul testo. Per servire altri cliente-tipo e supporto binario protocolli è necessario guardare al offerte esterni.

Dati del messaggio può essere scambiata in JSON formato , che è supportato da JavaScript e anche disponibile per Delphi (come open implementazioni source come SuperObject o lkJSON).


Ajax

Ajax applicazioni rich internet based per Delphi possono essere costruiti utilizzando Intraweb o ExtPascal . ExtPascal è un oggetto Pascal (Delphi, FreePascal / Lazarus) involucro / vincolante per Ext JS , un completo quadro e offre supporto trasparente GUI Ajax per tutti i principali browser web: internet Explorer 6+, Firefox 1.5+, Safari 3+, Opera 9+ e Chrome 2+ su qualsiasi piattaforma lato client (PC, smartphone, iPhone, PDA, ecc ). applicazioni demo online: FishFacts , informazioni .

Ajax push (aka Reverse Ajax / Comet ) offerte "nofollow noreferrer HTTP server push " dei dati (in formato XML o JSON) che trasferisce i dati dal server a tutti i client browser web connessi ogni volta che i dati sulle modifiche del server. I clienti possono 'iscriversi' alle informazioni che interessa.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top