【问题标题】:Web application + SQL server triggers / thresholdsWeb 应用程序 + SQL Server 触发器/阈值
【发布时间】:2015-10-02 22:54:56
【问题描述】:
我们有一个托管在 IIS 中的 Web 应用程序。在我们为应用程序服务的数据库中,我们有各种不同的数据值。我们正在尝试找出一种方法,如果某个数据值存在或超过阈值,则将电子邮件发送给客户。
通用示例:
假设我们有一张表格,其中列出了小部件及其“库存”数量。每当有人出售一个小部件时,这个数量价值就会被耗尽。我们想在小部件数量低于 5 时向经理发送电子邮件,并告诉他重新订购更多小部件。
我们不想让 sql 触发器在发生“耗尽”交易时检查数量。相反,我们需要某种类型的后台监控进程来定时检查小部件的级别。我们怎样才能做到这一点? Windows 服务/WinForm 应用程序? IIS 中内置的可以运行 ASP.net C# 代码的东西?
【问题讨论】:
标签:
c#
asp.net
sql-server
iis
triggers
【解决方案1】:
基于轮询的监控应该是您最后的手段。它为一个简单的任务使用了太多的资源,而且大多数时候它只会看到它不是做任何事情的情况。当您的数据增长时,它甚至无法扩展。
相反,您应该专注于更改这些值的代码,然后立即采取行动。并且检查也会更轻松:只检查一项而不是全部,并且只检查一次,而不是每 x 秒/分钟/小时/...
除了架构方面的考虑,回答你的问题,正如乔纳森所说:任何可以读取数据库和发送电子邮件的东西都可以,但我会考虑使用 Windows 服务来完成这项工作,因为这就是它们的用途:后台作业一直在运行,与主机用户无关。您还可以获得一些额外的好处,例如自动启动和恢复选项。
【解决方案2】:
任何可以读取数据库和发送电子邮件的东西都可以完成此操作 - 控制台应用程序、winforms 应用程序、Web 应用程序 - 这并不重要。
监视值何时更改(是什么更改?Web 应用程序?)并让 那个 应用程序也发送通知可能更有效