O Windows Scheduler ou SQL Server Job para o envio de digerir e-mails
-
18-09-2019 - |
Pergunta
Será o envio de e-mails de um aplicativo em uma base programada.
Eu tenho um EmailController na minha aplicação ASP.NET MVC com métodos de ação, um para cada tipo de notificação / e-mail, que terão de ser chamado em momentos diferentes durante a semana.
Pergunta: Windows Scheduler é (rodando em uma caixa Server 2008) melhor ou pior do que agendar este através de um trabalho do SQL Server? E por quê?
Graças
Solução
IMHO tendo chamada programador para o controlador e executar os métodos de ação para disparar notificações funcionou melhor. Meu processo (para melhor para o pior) é como tal:
-
Coloque o código para chamar o controlador / ação em um arquivo .vbs. O método de ação requer um "código de segurança" que deve corresponder a um valor no web.config ou então não irá executar (meu pensamento é que isso vai diminuir a chance de algumas pessoas bater o método de ação com a existência navegador e executando a notificação de envio código quando ele não deve ser executado).
-
Criar uma tarefa agendada no Agendador de chamar esse arquivo em uma base regular.
-
No meu banco de dados, registrar todas as execuções de notificação e incluir um atributo que define a frequência em que diferentes tipos de notificação deve sair. Isso, novamente, é para diminuir a chance de alguém enviando notificações quando não deveriam.
De qualquer forma, isso funciona. O único problema que tive foi bater vis https. Isso não funcionou como eu acredito que a tarefa estava sendo desafiados a fornecer algumas credenciais (que não podia, pois estava sendo executada por programa). Mudá-lo para http trabalhou e imo não cria qualquer tipo de risco de segurança.
Pensamentos? A melhor maneira de implementar isso? Eu adoraria ouvir qualquer coisa que alguém tem para oferecer.
Graças
Outras dicas
Eu prefiro enviar e-mails com um trabalho de servidor SQL. Como já tinha vários trabalhos em execução no nosso servidor SQL fazia sentido ficar com esta abordagem. Se tivéssemos ido para baixo a rota tarefa agendada teríamos então de tinha 2 sistemas de programação de tarefas diferentes que acrescenta complexidade desnecessária. Com todas as tarefas programadas que ocorrem através de um sistema é fácil de controlar e manter-los.