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

时间:2012-03-14 00:32:09

标签: c# asp.net .net wcf windows-services

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

该主题的最佳方法是什么?我想过Windows服务,但我读到了有关WCF的内容。请告知解决此任务的现代和好方法。我正在考虑.NET 4.0。

4 个答案:

答案 0 :(得分:4)

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

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

如果您想按需启动进程,那么添加WCF端点可能很有用,如果计时器方法足够好,那么您无需担心WCF。

在Windows进程中托管WCF的参考

答案 1 :(得分:3)

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

同样,您可以编写一个控制台应用程序,并通过Windows中的计划任务运行它。

这取决于您的后端如何工作以及您最熟悉的内容。

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

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

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

答案 2 :(得分:1)

你可以使用quartz.net之类的东西。请参阅链接 - http://quartznet.sourceforge.net/

答案 3 :(得分:1)

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

您还可以使用网页触发任务 - 这样您就不需要在服务器上安装任何其他组件。比其他一些机器配置周期性请求到触发任务的页面。确保任务可以重新启动并且足够短 - 因此您可以在常规页面请求中完成每个任务。页面可以响应“下一个运行任务”数据,这样您的客户端页面就可以继续ping服务器直到整个操作完成。

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