Una vez que escapas del ámbito de las señales eléctricas y te enfrentas al software, ¿existe realmente una arquitectura de "empuje" donde no hay encuestas periódicas?
No puedo pensar en ningún diseño en el que no esté sondeando en algún nivel. Parece que siempre es solo un nivel o dos debajo de la abstracción / API real con la que está tratando. Los sockets en el extremo receptor de la mayoría de las conexiones "push" solo sondean las solicitudes entrantes, etc.
networking
architecture
push
John Cromartie
fuente
fuente
Respuestas:
Creo que Windows requirió que las aplicaciones realizaran encuestas para IO hasta NT y Windows 95. Los sistemas operativos modernos de uso general prácticamente han eliminado la necesidad de realizar encuestas. Cuando su aplicación solicita leer desde un socket, la función de lectura debe realizar una llamada al núcleo del sistema operativo. El sistema operativo pone el hilo de llamada en un estado suspendido. A medida que llegan los paquetes de red, desencadenan una interrupción de hardware manejada por el sistema operativo. Si el paquete es el que está buscando su aplicación, el sistema operativo saca el hilo del estado suspendido y la lectura puede continuar. En otras palabras, su aplicación está de hecho acoplada al ámbito de las señales eléctricas a través del sistema operativo.
fuente
La arquitectura websocket es una arquitectura push, en realidad también lo es el intercambio y la perspectiva. Estos protocolos permanecen conectados al servidor en todo momento y el servidor envía mensajes (los empuja) cada vez que hay mensajes ...
fuente
También consideraría que los enchufes que Charles ya presentó son sin duda un diseño "push". Te acompañó desde el reino de las señales eléctricas, pero otro tema a considerar son los diseños "push" que son puramente decisiones de arquitectura de aplicación y suceden en capas de abstracción mucho más altas.
Los marcos de eventos típicos se considerarían push, ya que la fuente del evento activará eventos independientemente de quién los escuche o si el receptor de eventos puede mantenerse al día con esos eventos.
Otro ejemplo, que es el área donde trabajo, es la transmisión de video. Trabajamos con RTP (protocolo de transporte en tiempo real). Está basado en UDP / IP y, por naturaleza, es un protocolo push. El remitente seguirá enviando el video a la velocidad que elija sin importarle si el receptor lo sigue.
fuente
Claro que lo hay. Las aplicaciones de socket UDP en Unix, por ejemplo, pueden ser puramente push. El más conocido sería el clásico BSD Unix
syslogd
, que declara su disposición a aceptar paquetes entrantes ("enviados") y los procesa. No hay comunicación inversa a nivel de aplicación o protocolo (el "empujador" ni siquiera sabe si el paquete se recibió y procesó correctamente). En un nivel de API dentro de la aplicación receptora, puede haber mecanismos de recepción de sondeo, síncrono o devolución de llamada, los dos últimos de los cuales son puramente push.fuente