我们希望在IIS中托管我们的WCF服务执行一些定期操作。做这个的最好方式是什么?创建计时器看起来不是一个好的解决方案。创建一个像某种心跳一样的Windows服务看起来像一个问题解决方案,但它仍然闻起来不好。什么方法可以很好地解决这个问题?
答案 0 :(得分:2)
这取决于您的行动尝试做什么。如果它是与数据库相关的清理操作,例如删除孤立的购物车,您可以在您选择的数据库中为此安排作业,例如SQL Server非常可靠的作业引擎。如果一个基于操作系统的操作,如定期清理/删除文件等,Windows服务将是一个很好的选择。由于IIS / WCF服务通常设计为更多来处理外部响应我不认为使用它是错误的用于任务的操作系统或数据库的服务层。
答案 1 :(得分:0)
我曾经在PHP时代遇到过这样的任务,当时我想安排在给定时间发送电子邮件。经过几个月的修补(主要是试图处理可能永远不会进入的页面的调用),我最终得出的结论是,基本上无状态的代码不是这样做的地方,并安排了一个cron作业来触发每个夜。
我绝对建议沿着外部触发作业的路线(在SQL,Windows服务等)和从那里处理你的操作。正如我所知道的那样,痛苦不值得回报。
答案 2 :(得分:0)
我一直在努力解决这个问题,并且在某些情况下需要进行清理,只需在常用函数的背面完成一个异步(后台)任务来执行句点清理,即On GetCommonList( ),我检查设置/ appsetting为lastrun,然后每天或每5分钟启动一次,等等。这样,如果应用程序去绿色牧场(确实发生),我不需要担心关于在某处运行的任何挥之不去的任务。在所有情况下都不起作用,但安全性等也会自动处理 - 而服务等则可能仍然存在问题。只是我的2c。