我应该使用Windows服务还是ASP.NET后台线程?

Yea*_*Stu 5 asp.net windows-services

我正在ASP.NET 3.5中编写一个Web应用程序来处理一些基本的数据输入方案.应用程序还有一个组件需要不断轮询某些数据并根据业务逻辑执行操作.

实现"轮询"组件的最佳方法是什么?它需要每隔几分钟运行并检查一次数据.

我以前看过几个不同的选择:

  1. Web应用程序启动后台线程,该后台线程将始终在Web应用程序运行时运行.(我看到的实现在Application_Start事件中启动了线程.)
  2. 创建一个始终运行的Windows服务

这两种选择有哪些好处?还有其他选择吗?

我倾向于Windows服务,因为它是分开的,可以在不同的服务器上运行(更具可扩展性),并且可以更好地控制何时启动/停止等等.但是,我感觉像是具有"紧凑性"背景"在Web应用程序的过程中运行的逻辑可能使整个解决方案更容易理解.

Chr*_*isF 6

我主要是出于以下原因而选择单独的Windows服务:

  • 如有必要,您可以在其他服务器上运行它.
  • 您可以独立于网站启动和停止它.

我还补充一点,它可能会对网站本身的性能产生一些影响 - 这是你想要避免的.

这里的嗡嗡声是"关注点分离".该网站关注的是向用户呈现数据,该服务检查数据的完整性.

您还可以根据需要彼此独立地更新网站和服务.

我打算建议您查看计划任务并让Windows控制进程运行时,但我重新阅读您的问题并注意到您希望检查每隔几分钟运行一次.在这种情况下,启动过程的开销可能太大了 - 尽管一些实验可能会证明这种方式或另一种方式.

如果您使用计划任务,那么您可能还可以在当前任务完成之前开始下一次检查 - 如果您处于完全控制状态,则可以编写代码.