繁体   English   中英

在预定时间发送电子邮件

[英]email reports at scheduled time

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

您可以使用Hangfire

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

它让你安排这样的任务:

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

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

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM