我正在开发一个应用程序,该应用程序允许用户定义自己的时间表,确定何时执行某项操作。该操作需要在计划的时间触发,它将有效地调用我的.NET Core应用程序中的方法。
我已经审查了许多推荐的方法,例如像这样的方法,其中讨论了如何使用IHostedService
-https://blog.maartenballiauw.be/post/2017/08/01/building-a-scheduled-cache-updater-in-aspnet-core-2.html
我也看过HangFire。
这些方法的问题以及我在其他文章中看到的大多数讨论的问题是,它们确实专注于根据预定义的时间表运行任务(例如,每2小时运行一次任务),而不是自定义,动态计划。我正在寻找一种方法来说明如何执行一些操作,例如从应用程序内部连续轮询数据库调度(或执行等效的操作,这样更有效),以触发操作。
什么是一种有效的方法来检查数据库计划并将其连接到我的.NET Core应用程序中,可以在计划的时间运行所需的操作?是否可以使用IHostedService
或HangFire来执行此操作?那么那里是否有任何文章提供了有关如何执行此操作的清晰示例?
答案 0 :(得分:0)
这是一个有趣的问题。因此,我们如何处理团队中类似的事情。我们使用了一个存储所有动作的表。例如,具有这些列:
ActionId, UserId, Description, Timer, Priority, Recurring
现在我们有了一个数据库,用于存储操作。我认为您需要的是从该数据库正确查询数据。例如:
ActionId, UserId, Description, Timer, Priority, Recurring
1 2 test 1 1 1
因此,使用此工具,您实际上可以按自己的喜好读取数据并查询要执行的操作。上述动作将每分钟执行一次。
我们使用数据库的原因是因为某些操作的等待时间可能非常长,例如一周,因此使用缓存并不是最佳选择。
那么您如何读取该数据?
您创建另一个小应用程序(用于可调用性),该应用程序从数据库中读取定义的内容。因此,基本上您的.net核心应用的工作流程将是:
user creates task ----> .net core app saves it on database
.net核心控制台应用程序的工作流程将从数据库中读取:
define the timer to read the table ----> reads DB ----> calls your method
这种方法当然要经过硬编码,但同时又不依赖于其他框架或库。