Depois de escapar do domínio dos sinais elétricos e lidar com o software, existe realmente uma arquitetura "push" onde não há pesquisas periódicas?
Não consigo pensar em nenhum projeto em que ele não esteja pesquisando em algum nível. Parece que sempre existe apenas um ou dois níveis abaixo da abstração / API real com a qual você está lidando. Os soquetes na extremidade receptora da maioria das conexões "push" apenas pesquisam solicitações de entrada etc.
networking
architecture
push
John Cromartie
fonte
fonte
Respostas:
Eu acho que o Windows exigia que os aplicativos pesquisassem E / S até o NT e o Windows 95. Os sistemas operacionais modernos de uso geral eliminaram praticamente a necessidade de pesquisas. Quando seu aplicativo solicita a leitura de um soquete, a função de leitura deve fazer uma chamada para o kernel do sistema operacional. O sistema operacional coloca o encadeamento de chamada em um estado suspenso. À medida que os pacotes de rede chegam, eles acionam uma interrupção de hardware tratada pelo sistema operacional. Se o pacote é aquele que seu aplicativo está procurando, o sistema operacional retira o encadeamento do estado suspenso e a leitura pode prosseguir. Em outras palavras, sua aplicação é de fato acoplada à região dos sinais elétricos via sistema operacional.
fonte
A arquitetura websocket é uma arquitetura push, na verdade o mesmo ocorre com troca e perspectiva. Esses protocolos permanecem conectados ao servidor o tempo todo e o servidor envia mensagens (pressiona-os) sempre que houver mensagens ...
fonte
Eu também consideraria os soquetes que Charles já apresentou como certamente um design "push". Ele o acompanhou desde o campo dos sinais elétricos, mas outro tópico a considerar são os projetos "push", que são puramente decisões de arquitetura de aplicativos e ocorrem em camadas de abstração muito mais altas.
Estruturas de eventos típicas seriam consideradas push, pois a fonte de eventos acionará eventos, independentemente de quem os esteja ouvindo ou se o coletor de eventos puder acompanhar esses eventos.
Outro exemplo, que é a área em que trabalho, é o streaming de vídeo. Trabalhamos com RTP (protocolo de transporte em tempo real). É baseado em UDP / IP e, por natureza, é um protocolo push. O remetente continuará enviando o vídeo na velocidade que escolher, sem se importar se o receptor o acompanhará.
fonte
Claro que existe. Aplicativos de soquete UDP no Unix, por exemplo, podem ser puramente push. O mais conhecido seria o clássico BSD Unix
syslogd
, que declara sua disposição em aceitar pacotes recebidos ("enviados") e processá-los. Nenhuma comunicação reversa no nível do aplicativo ou protocolo (o "empurrador" nem sabe se o pacote foi recebido e processado corretamente). No nível da API no aplicativo de recebimento, pode haver mecanismos de polling, síncrono ou de recebimento de retorno de chamada, os dois últimos são de envio puro.fonte