C# 每天在web服务上的特定时间运行计划进程

C# 每天在web服务上的特定时间运行计划进程,c#,asp.net-mvc,scheduled-tasks,C#,Asp.net Mvc,Scheduled Tasks,我一直在构建一个web服务来同步SalesForce和我公司Zendesk之间的数据。在这样做的过程中,我构建了一些优化来大幅减少执行时间,例如缓存从每个服务检索到的一些较大的数据集 然而,这是有代价的。在缓存数据时,通过SalesForce和Zendesk的API下载所有内容最多需要3-5分钟 为了解决这个问题,我想让一个后台工作者每天午夜自动缓存所有需要的数据。然而,我不确定这样做的最佳方法是什么 构建一个只有一个工作线程的类,每隔几分钟检查一次,看它是否在午夜之后,并在从Global.as

我一直在构建一个web服务来同步SalesForce和我公司Zendesk之间的数据。在这样做的过程中,我构建了一些优化来大幅减少执行时间,例如缓存从每个服务检索到的一些较大的数据集

然而,这是有代价的。在缓存数据时,通过SalesForce和Zendesk的API下载所有内容最多需要3-5分钟

为了解决这个问题,我想让一个后台工作者每天午夜自动缓存所有需要的数据。然而,我不确定这样做的最佳方法是什么

构建一个只有一个工作线程的类,每隔几分钟检查一次,看它是否在午夜之后,并在从Global.asax启动时激活它,这就足够了吗。或者已经存在某种调度程序

编辑

在使用以下内容之间似乎存在一些分歧:

或者把所有东西都放在我的应用程序中


与使用windows任务调度器和编写辅助应用程序来调用我的应用程序的函数这样做不同。使用第三方库似乎更简单,但使用Windows任务调度器是否有任何固有的好处。

添加一个知道如何操作的端点,并使用Windows任务调度器调用新的缓存端点。

我想您应该将数据缓存逻辑添加到“console application”类型的项目中. 您可以将其部署到服务器,并使用windows“任务调度器”将其作为计划任务运行。如果您在出现堆栈溢出问题之前没有使用过此项目类型或计划任务,那么应该会有所帮助。如果需要,您可以添加命令行参数,您应该看看如何添加互斥体,以便一次只运行一个代码实例。

Windows有内置的任务计划程序,请使用它!是否真的建议使用任务调度器?在我的应用程序中作为后台线程似乎更简单。实际上,只需一个调用即可重置我的缓存
CacheTools.PopulateCache()
。需要做的就是每天在特定时间调用一次。有多种可用的调度框架,例如@Jdsfighter,您无法确定您的应用程序是否正在运行。。。这是一个网络应用,相信我,它最终会被回收利用……你能简单地为我解释一下回收利用吗?它只是重新启动我的应用程序吗?如果是这样的话,它的设置是在重新启动时自动获取数据。这样做的好处是什么,比如说允许我在一个web服务中存储所有内容?您可以选择任何一种方式,但我更喜欢任务调度器,您可以很容易地看到任务上次运行的时间,它运行了多长时间,下一次何时运行,以及从windows启动进程的临时运行,如果您只是将数据缓存作业作为windows服务运行,则必须自己构建该功能。