Aplicação Projeto - Daemon w / Web page FrontEnd
Pergunta
Eu tenho um aplicativo que varre um diretório de entrada a cada cinco segundos e quando um trabalho (ou seja, arquivo) é colocado no diretório do aplicativo lê-lo, processa e gera outro arquivo (s) em um diretório de saída.
A minha pergunta é, Se eu quisesse colocar um baseado na web front-end sobre este pedido, como eu ia esperar que o processamento para ser completa?
- submete usuário tarefa
- trabalho é colocado no diretório de entrada
- ...... O que estou fazendo na página web aqui?
- processamento ocorre
- arquivo de saída é gerado
- ...... Como eu sei que o trabalho está terminado?
As duas soluções que eu vim acima com foram:
- diretório de saída sondagem a cada x segundos a partir da página web
- usar AJAX para consultar um webservice ou página Web que reporta se o arquivo de saída está presente
Existe um projeto melhor para o servidor? Em outras palavras, como é que TCP ou Named Pipes ajuda nesta situação? (Não é possível usar a comunicação remota devido a um objeto DCOM.)
Solução
Uma solução que temos feito comercialmente no passado é basicamente as gravações daemon para um log (normalmente DB), com um carimbo de data / hora, sobre o que seu fazer, ea interface web só mostra a mais recente X quantidade de entradas o log, com um pouco de alternância para ocultar todas as mensagens "olhado no diretório, nenhum arquivo encontrado", trabalhou bastante bem, nós atualizado-lo mais tarde com AJAX (timer que recarregado a cada 20 segundos).
Outras dicas
Eu não acho que os pipes nomeados estão indo para torná-lo mais fácil de obter o cliente web para pesquisar automaticamente, mas pode fazer o servidor mais capazes de notificar um outro processo que a conversão for concluída - e, finalmente fila de um mensagem para o navegador web.
Você pode tentar ter a votação cliente web cada poucos segundos para ver se o processo de arquivo foi concluída, alternativamente, você poderia ter algo como Juggernaut "push" comandos para a página. Juggernaut funciona usando o Flash para abrir um socket no navegador da web que alimenta continuamente JavaScript do servidor. Poderia ser responsável por enviar um comando para alertar o navegador que o arquivo foi concluída e, em seguida, emitir um redirecionamento.