Pregunta

Quiero realizar un seguimiento de un par de cientos, tal vez miles de personas en tiempo real.

Digamos que los aspectos del hardware se clasifican y puedo obtener los datos en una base de datos.

Ahora, quiero salir y mostrar, en tiempo real.

Weeeell ...real "suficiente tiempo".Digamos que quiero dibujar un plano de planta de un edificio y parcela todo el mundo cada 1 a 5 segundos.

(Yo podría mostrar sólo ciertos "tipos" de personas en el clic de un botón;Voy a necesitar de minería de datos, etc, pero sigamos con el peor de los casos).

Estoy bastante cómodo con PHP, aunque no este tipo de cosas.Yo personalmente sería más feliz con una aplicación de windows codificado en Delphi, pero la tendencia parece ser la de hacer de todo, basada en el navegador.

Entonces, la pregunta, supongo que es si un navegador puede manejar esto y si hay argumentos de peso para un windows o una solución basada en explorador.

Si basada en navegador puede manejar esto (mostrando un par de miles de datos de los puntos de un segundo), y no hay abrumadores argumentos para windows, entonces creo que voy a ir a por basado en el navegador y aprender un par de trucos nuevos.La ventaja obvia es que yo también podría volver a utilizar una gran parte de mi código (vehículo) de seguimiento en Google maps.

¿Fue útil?

Solución

La mayor parte de su trabajo probablemente se realizará en su base de datos relacional habilitada espacialmente. Por ejemplo, PostGIS puede seleccionar puntos de datos dentro de un cuadro delimitador o predicados espaciales más sofisticados (ST_Contains, ST_Crosses, ST_INTERSECTS, ST_TOUCHES, ...), así como las uniones SQL habituales y dónde las condiciones. Las selecciones espaciales deben usar un índice espacial para acelerar las cosas.

Si este es el caso, su aplicación será en gran medida una capa de presentación. En este caso, use lo que sea más fácil para usted. La ventaja de la basada en el navegador es que es un servidor de cliente multiplataforma de forma predeterminada, pero esto podría no importarle.

Con respecto a la velocidad de renderización, realmente depende de cómo planea representar su mapa. Existen pruebas de velocidad Disponible para Google Maps. Sin embargo, sospecho que si está planeando una interfaz de tipo Google Maps Varios miles Los puntos se convertirán en un borrón de alfileres. ¿Tienes una maqueta de interfaz?

Otros consejos

Si estaría más feliz con un tipo de aplicación versus otra, entonces escriba ese tipo de aplicación. No hagas algo una aplicación de navegador solo para que sea una aplicación de navegador.

Primero, debe comprender cuál es el objetivo de su aplicación (y su tamaño, ¿cuántos clientes concurrentes?), Y luego decidir si un cliente gordo o un delgado/web se adapta mejor a ella. Luego debe verificar qué tipo de aplicación puede administrar la carga que pronostica. ¿Podría mostrar unos pocos miles de puntos de datos cada segundo más o menos con la tecnología que domina o puede en su plazo? ¿Multithreading le ayudaría a explotar los procesadores multinúcleo actuales para lograr su resultado? ¿Qué tecnología le permitirá aprovecharla?

Tal vez parezca un sombrero un poco viejo, pero si decides ir basado en el navegador, ¿podrías prever los puntos a una imagen y solo mostrar la imagen?

WebSockets

Echa un vistazo a HTML5 WebSockets, se trata de un nuevo estándar para el servidor/explorador de datos de exchange:

WebSockets es una tecnología proporcionando bidireccional, dúplex completo canales de comunicación, a través de un único Protocolo de Control de transmisión (TCP) zócalo, diseñado para ser implementado en los navegadores web y los servidores web.

El servidor puede enviar los nuevos datos al cliente cuando esté disponible, la eliminación de la sobrecarga de la extracción de cliente pide.

La página de la Wikipedia listas disponible implementaciones de servidor, incluyendo las versiones de PHP (pero no Delphi).

WebSockets no están obligados a JavaScript, el websockets.org la página dice::

Además, la Web de protocolo de Socket puede ser utilizado para apoyar un conjunto diverso de los clientes (por ejemplo,JavaScript, Adobe Flex, JavaFX, Microsoft Silverlight, etc.).Sin embargo, el HTML5 la especificación define solamente de apoyo para JavaScript, que se limita a protocolos basados en texto.Para servir a otros cliente-tipos y apoyo binario protocolos usted tendrá que mirar a externo ofertas.

Mensaje de datos pueden ser intercambiados en JSON el formato, el cual es compatible con JavaScript, y también está disponible para Delphi (como open source implementaciones como SuperObject o lkJSON).


Ajax

Ajax basado en aplicaciones ricas de internet para Delphi puede ser construida con Intraweb o ExtPascal. ExtPascal es un Object Pascal (Delphi, FreePascal/Lázaro) contenedor/vinculantes para Ext JS, una completa GUI framework Ajax y ofrece soporte transparente para todos los principales navegadores:IE 6+, Firefox 1.5+, Safari 3+, Opera 9+ y Chrome 2+ en cualquier lado del cliente de la plataforma (Pc, SmartPhones, iPhone, Pda, etc).Demostración en línea de las aplicaciones: FishFacts, más.

Ajax Push (aka Reverse Ajax / Cometa) ofrece "Servidor HTTP push"de los datos (en formato XML o JSON) que las transferencias de datos desde el servidor a todos los conectados los clientes de explorador web cuando los datos en el servidor cambia.Los clientes pueden suscribirse a la información que están interesados en.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top