ti-enxame.com

Serviço Windows ou Windows Task Scheduler?

Estou planejando criar um utilitário, que consultará o banco de dados e armazenará algumas informações (em outra tabela no banco de dados). É um utilitário multiencadeado e precisa ser executado a cada 5 ou 10 minutos/mais tarde, três vezes em um dia.

Eu vejo duas opções para conseguir isso na programação C #/DotNet.

  • criando serviço do windows com abordagem temporizada dentro dele.
  • um programa de console e agende-o usando o Windows Task Scheduler.

Qual você prefere e por quê?

10
Pavan G R

Comentários de um colega meu de ontem sobre esse mesmo tópico

"sempre haverá uma opinião variada sobre isso ... Minha regra geral seria se você precisasse de algo que fosse executado a cada cinco minutos (e você não se importasse com o tempo que ela corre ou quanto tempo demora), ou algo que responde a eventos, use um serviço.Se precisar de algo para executar em um horário específico todos os dias e tiver certeza de que não haverá uma volta, use o Agendador fornecido com o sistema operacional.Se precisar de um híbrido, use os dois soluções para casos variados ou encontre algo disponível (possivelmente Quartz .Net) "

Artigo de Jon Galloway de 2005 "// TODONT: use um serviço do Windows apenas para executar um processo agendado" é uma boa leitura. Sugiro que os comentários também sejam lidos, porque a discussão ainda continua até hoje e fornece alguns bons contra-argumentos.

Pessoalmente, concordo com o meu colega nesta questão. Mantenha-o simples pelo maior tempo possível. E se você estiver implantando no servidor Win2008, confira o Agendador de tarefas e todos os recursos que o agendador padrão oferece. Para mim, o assassino deveria iniciar uma tarefa agendada quando ocorrer um evento.

2
Ahmad

Serviços são usados ​​para fins administrativos ou para oferecer um serviço a vários aplicativos.

Agendamentos são usados ​​para executar uma tarefa várias vezes, que não necessariamente exigem permissões extras.

4
Tamara Wijsman

Ouvi os argumentos para usar o Windows Scheduler, mas sempre optei por gravar meu aplicativo como um serviço. No começo, pensei que seria uma solução melhor em um ambiente em cluster, mas isso não é verdade. O ponto principal é que eu não tinha uma boa razão além de "parecer" um design melhor.

3
Walter

por que você não tenta Quartz.net
usei uma vez e posso dizer que é uma estrutura poderosa para criar seu próprio agendador e fornecer um serviço pré-criado que executará seus trabalhos agendados (armazenados no banco de dados ou apenas em um arquivo XML) http://quartznet.sourceforge.net/

0
aleo

Se você deseja que o usuário tenha mais controle sem precisar construí-lo, use o Agendador de tarefas. Parece que o Google faz isso com a atualização de seus aplicativos. Dependendo do usuário, não é difícil gerenciar a tarefa. Tire o usuário do circuito e crie um serviço. A maioria das pessoas nunca vai tocá-los.

0
JeffO