我正在開發一個Asp.Net應用程序,並且需要根據某些事件定期發送郵件。首先,我想在global.asax中創建一個線程,並在application_start中啓動線程。但是當應用程序池崩潰或者其他問題時,這會變得有點問題。所以我實現了一個Windows服務並啓動了線程,並在Windows事件日誌中記錄了任何錯誤。這工作正常。但是我需要知道我是否正確實施它,或者有更好的方法來實現它嗎?發送郵件的通知服務實現
1
A
回答
1
對這類任務使用Windows服務是首選方式,而不是在ASP.NET應用程序中執行此操作。您也可以看看Quartz.NET,它可以簡單地代表您安排任務執行和處理線程的代碼。但是,如果你不想編寫Windows服務,最簡單的辦法可能是使用一個控制檯應用程序來完成發送電子郵件的工作,然後使用Windows任務計劃程序定期運行它。
3
我認爲你正在移動(或已經移動)到正確的方向。
我們也有類似的架構中也是一樣,我們使用MSMQ排隊從ASP.NET應用程序傳出通知某些情況下,那麼Windows服務,通常被稱爲消息管理器,可以抓住異步傳入的消息,併發送電子郵件或警報。
這證明是有效和健壯的,如果在消息排隊之後發生任何崩潰,什麼都不會丟失,因爲windows服務將總是處理隊列中的消息,因此您可以讓ASP.NET回收或機器隨着Windows服務被重新啓動,沒有任何東西會丟失。而實際上,在正常生產模式下,即時發送消息,當一切正常運行並且服務器不會過載或遭受任何損失時,解耦或同步鬆散大部分被隱藏。
在以後的項目中,我們現在正在使用TIBCO技術實現類似的功能,即針對隊列用戶的EMS和針對隊列訂戶的Business Works。
1
另一種選擇是基於消息的方法。您可以讓Windows服務/控制檯應用程序讀取消息隊列的消息(如msmq),並在收到消息時發送電子郵件。然後您可以讓ASP.NET應用程序將消息發佈到此隊列中。
Minibuss是一款輕量級的msmq客戶端,非常易於使用。另一種選擇是NServiceBus。
相關問題
- 1. IBM警報通知服務未發送郵件通知
- 2. 服務器推送通知實現
- 3. 推送通知服務器實現
- 4. 郵件不通過發送郵件發送服務
- 5. 簡單的Web服務發送電子郵件通知?
- 6. C#服務在特定時間通知/發送電子郵件
- 7. 從服務器發送推送通知
- 8. 如何實現通用服務器發送的事件的Servlet
- 9. 通過mailchimp api發送通知郵件
- 10. 如何通過服務發送通知
- 11. 從Android中的服務發送通知
- 12. 在Linux服務器上通過郵件發送郵件功能
- 13. smtp服務器用於通過java郵件api發送郵件
- 14. 通過郵件服務器發送郵件Asp.net mvc4
- 15. 使用Win API通過Gmail郵件服務器發送郵件
- 16. .NET - 郵件服務器不通過SmtpClient.Send發送郵件
- 17. 實現通知服務的技巧
- 18. 如何通過C#發送郵件時實現發件人ID?
- 19. Apple推送通知服務發送重複通知
- 20. 蘋果推送通知服務 - 許多通知要發送
- 21. 實時服務和推送通知
- 22. 使用SSL連接通過Gmail SMTP服務器發送電子郵件通知
- 23. 500發送電子郵件通知時發生內部服務器錯誤
- 24. TeamCity不發送電子郵件通知
- 25. 從Jenkins發送電子郵件通知
- 26. TeamCity發送電子郵件FxCop通知
- 27. ClearCase:發送電子郵件通知
- 28. 發送通知電子郵件
- 29. 發送電子郵件通知特權
- 30. 未發送Drupal通知郵件
謝謝。這真的很快。 – TCM
@安東尼,好吧,你已經做對了,所以...... –