Serviço Windows ou Windows Task Scheduler?

10

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.

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

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

Qual você prefere e por quê?

Pavan GR
fonte
3
Eu acho que essa pergunta é mais adequada para SO
Naveen
11
Realmente, essa é uma boa pergunta de design de software e você provavelmente terá pelo menos cinco boas respostas em cinco horas depois de fazer isso no SO.
Sharptooth 22/09/10
11
Eu votei para fechar, isso realmente pertence ao SO
Jaco Pretorius
2
Esta questão suscita uma discussão subjetiva e / ou estendida sobre os méritos de ambos. É muito sobre o assunto aqui e subjetivo e argumentativo lá.
2
Não tenho certeza, acho que a última frase "Qual você prefere e por quê?" acionaria os bots próximos por lá. É melhor aqui desde respostas reais pode ser obtido aqui
TheLQ

Respostas:

2

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) "

O 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.

Ahmad
fonte
4

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

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

Tamara Wijsman
fonte
3

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.

Walter
fonte
0

por que você não tenta Quartz.net?
Eu usei uma vez e posso dizer que é uma estrutura poderosa para criar seu próprio agendador, e fornece 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/

aleo
fonte
2
-1 Isso não responde à pergunta e se encaixa melhor como um comentário.
Tamara Wijsman
0

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 dos 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.

JeffO
fonte