我应该使用Windows服务还是ASP.NET后台线程?
我正在用ASP.NET3.5编写一个web应用程序,它处理一些基本的数据输入场景。应用程序中还有一个组件需要不断轮询一些数据,并根据业务逻辑执行操作 实现“轮询”组件的最佳方式是什么?它需要每隔几分钟左右运行并检查数据 我在过去看到过两种不同的选择:我应该使用Windows服务还是ASP.NET后台线程?,asp.net,windows-services,Asp.net,Windows Services,我正在用ASP.NET3.5编写一个web应用程序,它处理一些基本的数据输入场景。应用程序中还有一个组件需要不断轮询一些数据,并根据业务逻辑执行操作 实现“轮询”组件的最佳方式是什么?它需要每隔几分钟左右运行并检查数据 我在过去看到过两种不同的选择: web应用程序启动一个后台线程,该线程将在web应用程序启动时始终运行。(我看到的实现在应用程序启动事件中启动了线程。) 创建始终运行的windows服务 这两种选择的好处是什么?还有其他选择吗 我倾向于使用windows服务,因为它是分离的,可以
我倾向于使用windows服务,因为它是分离的,可以在不同的服务器上运行(更具可扩展性),并且可以更好地控制何时启动/停止,等等。然而,我感觉拥有“后台”的紧凑性web应用程序过程中运行的逻辑可能会使整个解决方案更易于理解。我选择单独的Windows服务,主要原因如下:
- 如果需要,您可以在其他服务器上运行它
- 您可以独立于网站启动和停止它
如果您使用计划任务,您也有可能在当前任务完成之前开始下一次检查-如果您完全控制,您可以编写代码。为什么不使用没有ui的控制台应用程序?可以完成windows服务所能做的一切,并且更易于调试和维护。除非您必须这样做,否则我不会使用windows服务。在这种情况下,控制台应用程序做得不好。我编写了一个TAPI应用程序,它必须留在后台拦截来电。但它只做了一次,因为tapi管理器获得了GCed,并且在第二次来电时无法使用。您可能会发现SQL Server作业调度程序足以满足您的需要。您可以编写和调试控制台应用程序,然后将其作为windows服务运行,从而实现这两个方面的最佳效果。我想说的是,但找不到文字。每次要进行任何更改时,您仍会遇到启动/停止/安装/卸载的问题。。。您可以在用户未登录时运行控制台应用程序。。。唯一的问题是使用提升的权限运行(windows服务可以做到这一点)并不是真正的问题——您可以设置计划任务的标识,这样您就可以使用您可以创建的任何权限运行。这听起来不错。请提供更多详细信息。被轮询的数据可能在数据库中,因此在数据库中执行轮询检查是有意义的。在共享主机中设置SQL作业比安装windows服务更容易,并且始终会运行,这与ASP.NET后台线程不同,ASP.NET后台线程在应用程序停止运行20分钟后(取决于设置等)将随应用程序一起关闭。SQL作业可以在必要时回调到站点以执行所需的操作。非常好!此链接显示如何创建作业:此链接显示如何安排作业:并查看此链接,了解有关Windows服务与SQL Server作业的详细讨论: