0

我最近开始为一家新公司工作,现在正在开发一个 Web 应用程序 (asp.net)。此应用程序使用 Global.asax 启动一个计时器,该计时器将在给定的时间间隔内执行各种操作(发送电子邮件、在数据库中设置各种值等)

他们现在想要的是有一些东西可以调用第三方网络服务来检索一些数据并在我们端更新数据库。我通常会在 Windows 服务中完成上述所有操作。然而,他们似乎很高兴在 global.asax 中有这种类型的东西

我将创建一个新项目并将这个新功能开发为 Windows 服务,但我应该打扰吗?也许我应该把它添加到 global.asax 中?

我的问题是,对于上述情况,最合适/最好的方法是什么?

4

1 回答 1

2

使用外部服务是最好的选择。

  1. 与请求无关的线程中未处理的异常将取消该进程。即使您通过 Application_Error 方法设置了处理程序,也会发生这种情况。

  2. 如果您在 Web Farm 中运行您的站点,您最终可能会得到多个应用程序实例,它们都尝试同时运行相同的任务。比第一项更具挑战性,但仍然不是太难。一种典型的方法是使用所有服务器共有的资源,例如数据库,作为协调任务的同步机制。

  3. 您的站点运行的 AppDomain 可能由于多种原因而关闭,并使用它取消您的后台任务。如果发生在代码执行过程中,这可能会损坏数据。

欲了解更多信息:

于 2012-07-16T09:06:35.800 回答