Pergunta

Eu tenho um formulário de entrada e edição de dados e, em todos os eventos de entrada ou atualização de dados, tenho que enviar um email para uma lista dinâmica de destinatários. Eu tenho enviado o email assim que o usuário clicar nos botões Salvar ou editar, mas estou pensando em salvar os dados no banco de dados e depois enviar o email posteriormente. Quero fazer isso em parte para melhorar o tempo de resposta do aplicativo, pois o envio de email tende a levar muito tempo do que o desejado.

Alguém fez alguma coisa algo como isso está relacionado a isso, existe uma maneira melhor de implementar algo semelhante ou conhece um bom tutorial sobre isso.

O corpo de email está formatado em HTML.

Foi útil?

Solução

Concordo com a CK sobre o uso de um serviço e uma fila de mensagens, mas existem algumas alternativas.

Um é usar um serviço que pesquise o banco de dados em um intervalo regular. Isso permite evitar a fila de mensagens ao custo de uma carga mais alta da CPU (o serviço fará muitas chamadas de banco de dados desnecessárias).

Você também pode fazer isso diretamente no banco de dados usando um gatilho de banco de dados ou um trabalho programado no banco de dados. As versões mais recentes do SQL Server suporta a execução de procedimentos armazenados gravados em C# ou VB.NET para que você provavelmente possa reutilizar grande parte do seu código existente aqui.

Finalmente, você pode optar por uma solução simples, onde você envia o e -mail em um thread separado no seu aplicativo ASP.NET. Dessa forma, você evita a necessidade de um aplicativo de serviço e pode reutilizar seu código mais ou menos como é hoje.

Outras dicas

Você pode escrever um serviço do Windows que lida com o envio de seus e -mails e use uma fila de mensagens como o método de transmitir dados do seu aplicativo para o serviço. Ou seja, seu aplicativo salva os dados e adiciona uma mensagem à fila. O serviço pesquisa continuamente a fila de mensagens, enviando cada uma como um email.

Uma maneira de fazer isso é gravar no banco de dados e, em seguida, colocar uma mensagem em uma fila que informa a um serviço de email (escrito como um serviço do Windows) que há e -mails a serem enviados. O serviço de email fala com o banco de dados para encontrar o que ele realmente precisa fazer. Isso decompa o serviço de email do aplicativo da Web e também evita a pesquisa.

Isso é um pouco diferente da solução da CK, pois a mensagem da fila é usada como um gatilho, em vez de conter as informações de email. Isso desacopla o aplicativo da web e o serviço de email até certo ponto, e significa que o serviço de email pode ser reutilizado por vários clientes sem que cada cliente tenha que observar (e manter um passo) com o mesmo formato de mensagem de email.

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