Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
IIS中承载的WCF服务内的定期任务_Wcf_Timer - Fatal编程技术网

IIS中承载的WCF服务内的定期任务

IIS中承载的WCF服务内的定期任务,wcf,timer,Wcf,Timer,我们希望由IIS中托管的WCF服务执行一些定期操作。最好的方法是什么?创建计时器看起来不是一个好的解决方案。创建一个类似心跳的windows服务看起来像是一个问题解决方案,但它仍然不好闻。什么方法可以很好地解决这个问题?这取决于您的操作试图做什么。如果是与数据库相关的清理操作,例如删除孤立的购物车,则可以在您选择的数据库中为此安排作业,如SQL Server非常可靠的作业引擎。如果Windows服务是基于操作系统的操作,例如定期清理/删除文件等,那么它将是一个很好的选择。由于IIS/WCF服务通

我们希望由IIS中托管的WCF服务执行一些定期操作。最好的方法是什么?创建计时器看起来不是一个好的解决方案。创建一个类似心跳的windows服务看起来像是一个问题解决方案,但它仍然不好闻。什么方法可以很好地解决这个问题?

这取决于您的操作试图做什么。如果是与数据库相关的清理操作,例如删除孤立的购物车,则可以在您选择的数据库中为此安排作业,如SQL Server非常可靠的作业引擎。如果Windows服务是基于操作系统的操作,例如定期清理/删除文件等,那么它将是一个很好的选择。由于IIS/WCF服务通常设计为更多地处理外部响应,我认为使用操作系统或数据库的服务层来执行任务不会有错。

我在PHP时代经常遇到类似的任务,当我想安排在给定时间发送电子邮件时。经过数月的修补(主要是尝试处理对可能永远不会出现的页面的调用),我最终得出结论,本质上无状态的代码不是执行此操作的地方,并计划每晚启动一个cron作业


我绝对推荐使用外部触发的作业(SQL、windows服务等)并从中处理操作。据我所知,这种痛苦是不值得回报的。

我为此付出了很多努力,在某些情况下,在需要清理的地方,我只是在一个公共函数的后面完成了一个异步(后台)任务来进行周期清理,即在GetCommonList()上,我为lastrun做一个签入设置/应用设置,然后每天或每5分钟启动一次,等等。这样,如果应用程序去了更绿色的牧场(确实发生了),我就不需要担心任何在某处运行的延迟任务。并非在所有情况下都有效,但安全性等也会自动得到解决,而服务等方面,您可能仍然存在问题。只需我的2c。

来澄清一下这一点。这不是一项维护任务,而是一项每小时执行一次的任务,以检查是否有一些订阅要终止,是否有一些电子邮件要发送等等。