任何架构提示,用于发送需要计算的每日,每周电子邮件更新

时间:2010-07-28 22:52:09

标签: c# email architecture web-applications

我有一个网络应用,会根据用户权限及其提醒设置(每日,每周,每月或无)发送每日,每周电子邮件更新。

每个发送到帐户的电子邮件(可能有多个用户)都需要进行几次数据库调用和计算。因此,随着用户数量的增加,使这些每日/每周电子邮件相当昂贵。

是否有关于编写这些服务的一般提示?我正在寻找一些架构技巧或模式,而不是像电子邮件可传递性这样的主题。

2 个答案:

答案 0 :(得分:0)

如果您必须处理非常大的信息集,我会在处理时间之前缓存数据,以便在特定时间从处理周期中省略DB'计算'。有效地中断处理,以便在计划的信息处理之前完成DB密集型操作。当实际发送这些电子邮件的时候,我想你可以快速处理一个非常大的音量而无需进行大量的调整。当然,我也不知道我们在这里谈论的是什么样的卷。

您也可以对应用程序进行处理,以便将处理数据进一步拆分为逻辑块,以减少必须一次处理的所有数据量,具体取决于您可能简化的情况,授予,我通常不会除非有充分的理由,否则建议进入线程,你可能会有一个。至少,使用后台工作程序类型的线程进程,并根据您对数据进行分段的方式触发一些进程。

在处理异常时,请记住现在让那些处理器关闭,通过记录某种类型或通知来处理它们然后继续,你不会想要一个错误来搞砸了进一步处理,我敢肯定你可能计划好了。

此外,发送电子邮件是异步的,因此它们不会阻止处理,这可能是一个明显的遵守,但有时候这样的事情很容易被忽视,并且在发送大量电子邮件时会造成相当大的瓶颈。

最后,事先用合理的负荷进行测试,并拍摄超过容量。

答案 1 :(得分:0)

您可能想查看sql报告服务。

您可能必须将当前设置转换为sql报告格式,但作为回报,您将获得用于安排报告生成的整个管理界面,允许用户修改报告输入,缓存历史/当前报告以及能力用户可以管理自己的电子邮件订阅。

http://msdn.microsoft.com/en-us/library/ms160334.aspx