2011-12-04 92 views
1

我目前正在一個大的asp.net網站上工作。我想安排一些報告並每週/每月向我的客戶發送電子郵件。我正在考慮使用Windows服務並使用計時器。這是最好的選擇嗎?在預定時間發送電子郵件報告

+0

您用Reporting Services(SSRS)標記了此項。是否安裝了SSRS?它爲此提供了功能,但我不確定您是否對此感興趣。如果你已經安裝了一個SSRS實例,那麼使用這個,否則,它可能不值得,並且你可以推出自己的... –

回答

1

我認爲一個Windows服務是最好的選擇,雖然我不會親自使用一個計時器。

我們處理這個問題的方式是讓主要服務工作循環閒置1/2秒,然後檢查是否需要運行任何報告。在本設計中

一個非常重要的考慮:爲了防止崩潰您服務的單個報告,你應該做兩件事情:

1)運行在單獨的線程的所有報告(使用backgroudworker或管理自己的線程)。

2)一次只能啓動一定數量的報告。在你的循環中,跟蹤正在運行的報告,並在停止時啓動下一個報告。最大數量取決於報告的強度和服務器的容量。

1

你可以使用Hangfire

說明從http://hangfire.io« 一個簡單的方法來ASP.NET應用程序中進行發射後不管,延遲,重複任務 。不需要Windows服務。支持 持久存儲。開放並免費用於商業用途。 »

它讓你安排一個任務是這樣的:

RecurringJob.AddOrUpdate(() => MyReport.Run(), Cron.Weekly(DayOfWeek.Monday)); 

MyReport.Run()是一個靜態方法,它渲染和通過電子郵件發送的報告的照顧。

相關問題