Pergunta

Quais são as diferentes abordagens para criar tarefas agendadas para aplicativos web, com ou sem um aplicativo web/desktop separado?

Foi útil?

Solução

Se estamos falando da plataforma Microsoft, sempre desenvolverei um serviço Windows separado para lidar com essas tarefas em lote.

Você sempre pode fazer referência aos mesmos assemblies que estão sendo usados ​​pelo seu aplicativo da web para evitar qualquer duplicação de código desagradável.

Outras dicas

Jeff discutiu isso no blog Stack Overflow -http://blog.stackoverflow.com/2008/07/easy-background-tasks-in-aspnet/

Basicamente, Jeff propôs usar CacheItemRemovedCallback como um cronômetro para chamar determinadas tarefas.

Pessoalmente, acredito que as tarefas automatizadas devem ser tratadas como um serviço, uma tarefa agendada do Windows ou um trabalho no SQL Server.

No Linux, verifique o cron.

Acho que o próprio Stack Overflow está usando uma expiração do ApplicationCache para executar código em segundo plano em intervalos.

Se você estiver em um host Linux, quase certamente usará cron.

No Linux você pode usar tarefas cron (http://www.unixgeeks.org/security/newbie/unix/cron-1.html) para agendar tarefas.

Use buscadores de URL como wget ou curl para fazer solicitações HTTP GET.

Proteja suas URLs com autenticação para que ninguém possa executar as tarefas sem conhecer o usuário/senha.

Acho que o Agendador de Tarefas integrado do Windows é a ferramenta sugerida para este trabalho.Isso requer um aplicativo externo.

Isso pode ou não ser o que você está procurando, mas leia este artigo, "Simule um serviço do Windows usando ASP.NET para executar trabalhos agendados".Acho que StackOverflow pode usar esse método ou pelo menos foi falado sobre usá-lo.

Um método muito simples que usamos onde trabalho é este:

  1. Configure um webservice/método web que execute a tarefa.Este webservice pode ser protegido com nome de usuário/senha, se desejado.
  2. Crie um aplicativo de console que chame esse serviço Web.Se desejar, você pode fazer com que o aplicativo de console envie parâmetros e/ou recupere algum tipo de métrica para saída para o console ou registro externo.
  3. Agende este executável no agendador de tarefas de sua escolha.

Não é bonito, mas é simples e confiável.Como o aplicativo de console é essencialmente apenas uma pulsação para dizer ao aplicativo para fazer seu trabalho, ele não precisa compartilhar nenhuma biblioteca com o aplicativo.Outra vantagem dessa metodologia é que é bastante trivial iniciar manualmente quando necessário.

Use buscadores de URL como wget ou curl para fazer solicitações HTTP GET.

Proteja suas URLs com autenticação para que ninguém possa executar as tarefas sem conhecer o usuário/senha.

Você também pode dizer ao cron para executar scripts php diretamente, por exemplo.E você pode definir as permissões no arquivo PHP para evitar que outras pessoas os acessem ou, melhor ainda, não tenha esses scripts utilitários em um diretório acessível pela web...

Java e Spring – Use quartzo.Muito bom e confiável - http://static.springframework.org/spring/docs/1.2.x/reference/scheduling.html

Acho que existem maneiras mais fáceis do que usar o cron (Linux) ou o Agendador de Tarefas (Windows).Você pode incorporar isso em seu aplicativo da web usando:(a) agendador de quartzo,

ou se você não quiser integrar outra biblioteca de terceiros ao seu aplicativo:(b) crie um thread na inicialização que use a classe Java padrão 'java.util.Timer' para executar suas tarefas.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top