【问题标题】:email reports at scheduled time在预定时间发送电子邮件报告
【发布时间】:2011-12-04 03:23:54
【问题描述】:

我目前正在开发一个大型的 asp.net 网站。我想安排一些报告并每周/每月通过电子邮件发送给我的客户。我正在考虑使用 Windows 服务并使用计时器。这是最好的选择吗?

【问题讨论】:

  • 您使用 Reporting Services(SSRS) 标记了此内容。您是否安装了 SSRS?它为此提供了功能,但我不确定您是否对此选项感兴趣。如果你已经安装了一个 SSRS 实例,那么就使用这个,否则,它可能不值得,你可以自己滚动......

标签: c# asp.net reporting-services scheduling


【解决方案1】:

你可以使用Hangfire

来自http://hangfire.io的描述 « 一种执行即发即弃、延迟和重复任务的简单方法 在 ASP.NET 应用程序中。无需 Windows 服务。受支持 持久存储。开放且免费用于商业用途。 »

它可以让你安排这样的任务:

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

MyReport.Run() 是一个静态方法,负责呈现和通过电子邮件发送报告。

【讨论】:

    【解决方案2】:

    我认为 Windows 服务是最好的选择,尽管我个人不会使用计时器。

    我们处理这个问题的方法是让主服务工作循环空闲 1/2 秒,然后检查是否需要运行任何报告。

    此设计中有一个非常重要的考虑因素:为了防止单个报告使您的服务崩溃,您应该做几件事:

    1) 在单独的线程中运行所有报告(使用 backgroudworker 或管理您自己的线程)。

    2) 一次只启动一定数量的报告。在您的循环中,跟踪正在运行的报告,当一个报告停止时,启动下一个。最大数量取决于报告的强度和服务器的容量。

    【讨论】:

      猜你喜欢
      • 2021-07-02
      • 1970-01-01
      • 2012-05-07
      • 2019-04-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多