【发布时间】:2016-04-02 10:51:23
【问题描述】:
有一个 ASP.net C# Web 应用程序,通过它我们可以将收件人电子邮件、时区和他们的 smtp 服务器详细信息输入到数据库中。我有两个要求: 1. 考虑数据库中的一个表。当表格发生变化时,必须发送电子邮件。如果我们可以每 5 分钟不断检查一次数据库,那是可以的。如果我们可以立即发送它会很棒,但延迟也可以。 2. 在各自时区的凌晨 12 点自动发送电子邮件。
我熟悉 C# 编程。但是对于自动调度的东西有点新。这听起来像是一个基本问题,但如果您能提供帮助,那就太好了。实现这一点的最佳方法是什么 - Web api 或 Web 服务或 WCF 或 Windows 服务或 Web api 和任务调度程序的组合?请让我知道你的想法。还有一个关于如何实现它的小提示会很棒。
【问题讨论】:
-
定期后台任务最好由 Windows 服务或计划的控制台应用程序执行。
-
为什么不在桌子上设置触发器,以便在特定桌子上发生任何变化,您都会自动生成并发送电子邮件。这实际上是一个非常简单的任务。不要浪费时间每 5 分钟收集一次数据库来做一些如此基本的事情。或者,您可以根据时间戳创建一个在上午 12 点运行的作业,检查具有修改的时间日期字段等的列......仍然非常简单的任务要完成
-
@MethodMan 数据库中执行脚本/CLR 的触发器?对我来说似乎有点矫枉过正。
-
我需要在上午 12 点发送一份附有 PDF 的报告。如果是基于数据库更改的电子邮件,它可以只是一封正文较小的电子邮件。那么 Windows 服务或控制台是最好的?
-
@Rob 如果表不经常更改,我认为这并不过分,也每 5 分钟检查一次数据库,有些人也会认为是过大的。但是,如果 OP 决定采用该路线这仍然是一项非常简单的任务...... OP 唯一需要做的就是添加一列或 2 CreatedTime 和 UpdatedTime 等......计划的作业仍然可以处理所有这些
标签: c# web-services asp.net-web-api windows-services wcf-web-api