2008-11-18 86 views
1

我有一个Web应用程序需要在满足特定条件时触发长时间运行的SQL Server过程(重建表)。推荐的程序是什么?ASP.NET长时间运行SQL Server过程 - 如何处理?消息?

我在想,当条件满足时,一条记录将被插入到数据库中,并且一个预定的SQL服务器作业将以指定的时间间隔检查该表并启动该过程。这似乎有点hackish,但。

处理这个问题的首选方法是什么?作为一个相关的问题,处理未来事件的首选方式是什么(即在用户注册后10天发送电子邮件?)

这种类型的场景是什么消息传递?

回答

1

你的方法是可行的,而且是我见过的一种方法。例如,在一个拥有千兆字节库存数据的复杂网络中,该公司基本实施了您所描述的内容,以便全天部分更新库存数据。

我见过的其他一些方法涉及一个坐在应用程序服务器上的调度服务,它将调用一段代码来处理事件。 (比如你问题的第二部分)。通过在应用程序层中实现此功能,您可以扩展事件处理,并且可以使用数据库作为后备存储以确保您不会丢失任何事件。

您的用户是否需要查看操作结果?您也可以启动异步调用来处理结果,然后挂接到用户并提供状态信息。如果你不想挂在用户身上,那么你需要一个状态表来存储结果。

我会看的最后一件事是服务代理。我还没有使用它,我不确定它是否合适,但我会考虑它作为一个选项。我们已经开始研究这种方法来启动长时间运行的断开连接的工作流程,但在我们到达任何地方之前,我都离开了公司。

0

如果在调用执行存储过程之后不必担心结果,则可能会非常好地异步运行它。

0

我想通知用户进行了需要重建的更改(a)重建将发生并且(b)重建已完成。我想通过UI中的消息和电子邮件来完成此操作。我宁愿应用程序(而不是DB处理电子邮件)。

我希望能够在交易完成很长时间后在UI中通知他们(如果他们注销然后在当天晚些时候登录)。

当你说在应用程序服务器上安排服务时,你指的是像Windows服务这样的服务,它完全负责处理这种类型的事情?