Push vs Poll cuando es aceptable un gran retraso (horas)


10

Parece de sentido común hoy en día que las encuestas son una mala práctica y presionar es el camino a seguir cuando se desarrollan aplicaciones móviles que requieren recibir constantemente datos de un servidor remoto.

Todas las tiendas móviles principales ofrecen su versión de un servicio de notificación push:

Sin embargo, me pregunto hasta qué punto esta suposición es válida. Quiero decir, si tengo una aplicación que sondea un servidor remoto solo un par de veces al día, y a la que no es necesario enviar "notificaciones" al instante (es aceptable un gran retraso), entonces sería una buena decisión para sondear los datos en lugar de empujarlos?

¡Gracias por adelantado!


1
No estoy lo suficientemente familiarizado con los mecanismos de empuje móviles para realmente evaluar esto, pero me pregunto si usar el mecanismo de empuje podría ahorrar algunos dolores de cabeza, por ejemplo, en relación con los escenarios de apagado / reposo. Si esto fuera solo una aplicación de escritorio / web, diría que el sondeo está bien; empujar generalmente también implica mantener una conexión abierta en su servidor web, por lo que esa es otra ventaja de sondear en un escritorio / navegador, pero como se trata de una aplicación móvil y puede usar estos mecanismos de empuje alternativos, creo que la respuesta podría ser diferente.
Aprendiz del Dr. Wily

Respuestas:


14

El sondeo siempre es aceptable cuando el tiempo real no es una necesidad. Lo que tienes que preguntarte es por qué usarías uno en lugar del otro.

El propósito de un servicio push es un par de cosas; puede ser mucho menos tráfico para usted si sus transmisiones se transmiten y un proveedor externo realiza la transmisión; esto le permite enviar un mensaje y que miles lo reciban. Pero como notará, el mayor beneficio de un servicio push es la naturaleza en tiempo real que permite actualizaciones inmediatas para llegar a sus consumidores. Sin embargo, al hacer empujes, realmente no querrás empujar grandes conjuntos de datos si estás transmitiendo, y también estás a merced del servicio de empuje de terceros que utilizas (si utilizas uno).

El propósito de una encuesta es verificar las diferencias de datos periódicamente, donde el período de actualización puede tener un SLA aceptable de inexactitud hasta cierto período de tiempo. Una encuesta requerirá que todos sus clientes soliciten los datos periódicamente, lo que significará que se solicita una conexión para cada cliente en ejecución, y la necesidad de un servicio en vivo capaz de monitorear esos datos con precisión para servirlos a los encuestadores. Tener datos precisos para servir significa cierta persistencia de datos que ocupará tiempo de disco y mantenimiento.

Entonces, a partir de esto, podemos ver que si le preocupa el tráfico de red o el mantenimiento de un servicio (lo que significa posiblemente autenticar / autorizar solicitudes, registrarlas, lo que ocupa espacio en disco, todos los requisitos normales para mantener un servicio), entonces no lo haga ' No quiero obligar a los clientes a sondear. Sin embargo, si el caso de uso requiere la transmisión de un conjunto de datos particularmente grande o si no puede estar atado a la API de un tercero que puede cambiar a tiempo, así como su SLA o cargos, entonces puede ser aplicable un sistema de votación local, aunque el mantenimiento los gastos generales pueden ser significativamente más. Alternativamente, es posible que ya esté ejecutando el servicio y que los datos persistan de modo que el sondeo sea una adición ligera a la infraestructura ya existente, lo que hace que el sondeo sea más deseable.

Aunque en el punto central que haces, estás en lo correcto; Si es necesario en tiempo real , la votación no servirá. Si no es así, solo tiene que hacer los cálculos sobre cómo se pueden verificar periódicamente los datos multiplicados por su base de clientes multiplicado por el tamaño de su conjunto de datos para decidir si el costo de la red valdrá la pena, o si un servicio push sería mejor donde siempre se pueda impulsar un evento de cambio que les permita solicitar el conjunto de datos de gran tamaño en un paso secundario (aunque la atomicidad de estos pasos puede ser algo de lo que debe tener cuidado dependiendo de la importancia de los datos).


3

La votación debería estar bien en su caso. Y no tendrá que integrarse con otro sistema (o múltiples sistemas para múltiples plataformas).

Sin embargo, los detalles del dispositivo pueden ser un problema. ¿Puede sondear de manera confiable cuando la aplicación no es frontal y central en el dispositivo? (puede o no ser un problema para usted). Su capacidad para hacerlo puede depender de la tecnología que esté utilizando para desarrollar la aplicación.


Estoy planeando usar temporizadores integrados para asegurarme de que la aplicación sondee el servidor incluso si no está "activa". Sé cómo hacerlo en Android, y espero que iPhones y WindowsPhones proporcionen la misma funcionalidad;)
Thomas CG de Vilhena

2

Por supuesto. También es más fácil (solo tenga cuidado con los picos de tiro si todos están tirando en el mismo horario).

Dicho esto, desafiaría la suposición de que 'un gran retraso es aceptable', teniendo en cuenta las expectativas de los usuarios móviles. ('¡Los mapas no se actualizan en tiempo real! ¡Inaceptable!' O 'Sé que es el servicio meteorológico, ¡pero seguiré presionando ese botón de actualización cada cinco segundos hasta que el pronóstico para mañana se vuelva soleado!')


Buen punto sobre evitar que todos voten al mismo tiempo. ¡Supongo que configurar temporizadores al azar será suficiente!
Thomas CG de Vilhena
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.