Atualmente, estou em um ambiente AngularJS / Javascript.
Atualmente, o aplicativo usa o método de pesquisa (ou seja, para recuperar novos dados do servidor em uma quantidade fixa de segundos).
Isso é bastante cansativo e não recupera o resultado mais recente imediatamente. Supondo que o servidor esteja usando o ASMX para funções de serviço da web e, se possível, sem uma grande revisão, como posso melhorar melhor a eficiência do aplicativo?
Editar 1:
Ao taxar, quero dizer que o servidor precisaria exibir tabelas SQL diferentes e dados e outras coisas associadas, o que significa processamento de dados complexo que, se houver muitos usuários simultâneos, receio que possam haver possíveis problemas com o desempenho do servidor no futuro.
Os dados mais recentes não serão recuperados, pois atualmente o aplicativo está usando o tipo de chamadas https de solicitação-resposta.
Posso melhorar mais no lado de aplicativos móveis, mas não consigo modificar muito no lado do servidor, além dos arquivos de serviço da web do servidor.
Você pode usar eventos enviados pelo servidor como uma alternativa à pesquisa.
Em vez de solicitar ao servidor novos dados a cada n segundos, abra uma conexão dedicada e faça com que ele envie seus novos dados quando estiverem disponíveis!
A conexão permanecerá aberta até que seja explicitamente fechada pelo cliente ou pelo servidor (ou por seu término repentino).
Você pode configurar o servidor para transmitir dados para o cliente em intervalos fixos ou em horários específicos no servidor (digamos, quando um objeto muda de estado ou quando um agendador dispara um trabalho ou quando).
Você pode definir diferentes tipos de eventos e ter rotinas diferentes para lidar com diferentes tipos de eventos.
No lado do servidor, você pode manter uma fila de usuários atualmente inscritos no seu tipo de aplicativo / evento. Quando um evento é criado, o servidor o transmite a todos os usuários na fila. Estruturas como Jersey2 já implementam essa abordagem usando um objeto Broadcaster .
No lado do cliente, você precisará escrever um serviço que ouvirá os eventos enviados pelo servidor em um URL específico .
Ao entrar em um estado / rota, você deverá assinar um tipo de servidor e cancelar a assinatura
$destroy
para evitar vazamentos.fonte
Eles são websockets: são uma exersão de HTTP, funcionam na mesma porta.
Ele permite a comunicação bidirecional entre cliente e servidor e, é claro, existe uma integração angularjs disponível para isso.
Caso contrário, no lado de back office, se você observar o Spring em Java, existem outras maneiras de fazer isso:
Este link covevr websocket e outros métodos adaptados ao que você precisa.
Observe que, se você não possui Spring / Java, ainda deve lê-lo e procurar uma solução equivalente em sua pilha de tecnologias.
fonte
Você precisa definir melhor coisas como "bastante exigente" e explorar por que ele não recupera o resultado mais recente imediatamente. Essas são perguntas que provavelmente estão acontecendo independentemente de você estar pesquisando ou não com seu cliente.
Dito isto, com um front end baseado em navegador, você basicamente tem duas opções se quiser permanecer no javascript nativo: polling (como você está fazendo, ou possivelmente fazendo uma sondagem longa) ou soquetes da web. Eu nunca vi soquetes da Web executados com ASMX antes (sem dizer que não pode ser feito, apenas que eu não tenho experiência lá, então não sei o quão difícil seria para você reimplementar). Além disso, se você estiver tendo problemas de desempenho ou precisão, como eu disse, eles ainda podem estar lá, mesmo com o uso de soquetes da web.
fonte