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ê?
Respostas:
Comentários de um colega meu de ontem sobre esse mesmo tópico
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.
fonte
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.
fonte
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.
fonte
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/
fonte
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.
fonte