2011-07-04 10 views
6

Necesitamos crear una interfaz web para mostrar algunos datos. El problema es que los datos deben actualizarse una vez por segundo. Para mí, como desarrollador web, la solución obvia es AJAX. Lamentablemente, uno de los propósitos de esta interfaz web debe mostrarse dentro de la ventana del navegador incorporado, que se espera que se ejecute constantemente durante meses o incluso años. Eso es todo, meses de trabajo sin reinicio/actualización. Durante las pruebas, ejecutamos una interfaz de prueba de concepto (que solicitó un conjunto de datos simple cada 1,5 s) en Safari durante más de un mes. Durante este período de tiempo, el uso de memoria de Safari aumentó de ~ 30 MB a más de 100 MB. Por lo tanto, tememos la estabilidad de tal solución.Qué tecnología usaré para una página web que solicita constantemente datos del servidor

Me pregunto si podría recomendarnos alguna otra técnica para esta tarea, posiblemente con menos sobrecarga (cuando solicitemos conjuntos simples de datos, como en nuestro caso, me temo que los encabezados HTTP son una parte muy significativa de los datos)

+0

¿Has mirado en Node.js? –

+0

¿Es una opción para escribir una aplicación por separado, para que pueda rodar su propio protocolo de red (por ejemplo, con una conexión permanente)? Todavía podría usar webkit para el renderizado, pero obtendría más control. –

+0

+1 para una buena pregunta – Predator

Respuesta

1

Yo sugeriría mirar en Node.js y la plug-in de now.js, que permite actualizaciones en tiempo real a través de websockets. Incluso tiene soporte para navegadores antiguos, por lo que si el navegador no es compatible con websockets, se aplicará tanto a la implementación de un servidor cometa, a AJAX o a un iframe.

Es extremadamente fácil de instalar en un entorno Linux, y hay una amplia documentación para comenzar.

Funciona con javascript y se ejecuta en el motor de JavaScript de Google V8, por lo que si alguna vez ha trabajado con OOP Javascript, debería ser capaz de recuperarlo con relativa facilidad.

ENLACES:
http://nodejs.org/
http://nowjs.com/

0

¿Quizás websocket? En lugar de hacer una solicitud de AJAX cada X segundos, el servidor envía nuevos datos a medida que llegan.

0

Mi faveite personal es php4 +, mysql, apache o lightpd webserver.

Tough También sugiero Python.

Me especializo en lo que mencionas, con eso dicho, ¿estarás realmente mirando la pantalla? Si no, debe solicitar la página usando un socket http o mediante un cronjob de wget en un cuadro de Linux.

Sí, el encabezado http es muy importante, si intenta eliminarlos, el servidor web emitirá un error de "Servidor - Solicitud incorrecta".

Déjame saber lo que decida, no tengo mucho que compartir :)

0

Sospecho que el problema no es AJAX per se, pero utilizando un navegador an sich: No creo que en cualquier lugar con el hecho ejecución constante en mente, y supongo que todos los procesos de (re) carga se convertirán en algún tipo de memoria extra al final.

Creo que lo mejor sería consumir sus datos a través de algo simple que usted mismo diseña. Obviamente, puede producirlo en el mismo lugar (servidor, que puede ser consultado a través de HTTP o lo que más le guste), pero no necesita un navegador web completo si su objetivo es primero "un par de años de actividad".

1

¿Qué hay de Adobe AIR como front-end? Puedes usar Flash/FLEX dentro del cual tienen basureros decentes, por lo que correr mucho tiempo no debería ser un problema. AIR también permite escribir en XHTML y JavaScript, por lo que podría ser una buena opción si solo está familiarizado con esas tecnologías

PHP no es una buena opción para este tipo de solicitudes. Comet parece ser una buena forma de recibir datos del servidor. Puede usar, por ejemplo, excelente Tornado (Python) como back-end.

ActionScript permite utilizar sockets TCP para que pueda escribir su propio protocolo para un mejor rendimiento y el uso BOOST Asio (C++) o Netty (Java) como backend escalable

+0

Personalmente, como preferencia personal, primero probaré AIR con JavaScript primero y luego Flash/FLEX. Pero en el mundo real desarrollaría ambos como prueba de conceptos y probaría cada uno de forma interdependiente. Para el back-end, si no puedo construir controles directamente en AIR, dependerá específicamente de lo que esté haciendo la aplicación, así que no comentaré sobre la infraestructura de back-end. – Ryan

Cuestiones relacionadas