web应用程序中用于定期任务的子系统

本文关键字:任务 子系统 应用程序 用于 web | 更新日期: 2023-09-27 18:27:47

准确地说:我有一个.NET web表单系统。我需要一种方法来检查一些值并执行任务,这取决于这些值的周期性方式。比方说:每个月我都要检查我的客户信用卡是否仍然有效。还有一些其他任务/短期检查。

这个问题的最佳方法是什么。我想到了Windows服务,但我读到了WCF。请说明解决这项任务的现代且好的方法是什么。我正在考虑.NET 4.0。

web应用程序中用于定期任务的子系统

WCF只是一个可以在Windows服务或IIS中运行的接口。您可以使用此WCF接口来触发一些同步或异步操作。

您的情况听起来像是希望Windows服务启动计时器对存储在数据库或文件中的数据执行验证。

如果你想按需启动一个进程,那么添加WCF端点可能会很有用,如果计时器方法足够好,那么你就不必为WCF而烦恼。

在Windows Process 中托管WCF的参考

  • microsoft.com
  • codeproject.com

正如您所推测的,Windows服务是解决这个问题的好方法。

类似地,您可以编写一个Console应用程序,并通过Windows中的计划任务运行它。

这取决于您的后端工作方式以及您真正熟悉的内容。

编写控制台应用程序非常简单,但这可能不是最好的方法,因为您需要确保用户登录,以便运行计划任务。

服务的实现稍微复杂一些,但它具有正确集成到操作系统中的好处。

MSDN有一个用C#编写服务的好指南,您不一定需要WCF:http://msdn.microsoft.com/en-us/library/aa984464(v=vs.71).aspx

您可以使用类似quartz.net的东西http://quartznet.sourceforge.net/

如果您对服务器的控制有限(即只允许常规HTTP页面):

您还可以使用网页来触发任务——这样您就不需要在服务器上安装任何其他组件。然后让其他机器配置对触发任务的页面的定期请求。确保任务是可重新启动的并且足够短,这样您就可以根据常规页面请求完成每个任务。页面可以响应"下一个要运行的任务"数据,这样您的客户端页面就可以继续ping服务器,直到整个操作完成。

注意:由于应用程序池/应用程序域回收,尝试在web服务进程内运行长时间运行的任务是不可靠的。