Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.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
.net core 根据数据库计划调用.NET方法_.net Core_Scheduled Tasks_Scheduler_Hangfire_Asp.net Core Hosted Services - Fatal编程技术网

.net core 根据数据库计划调用.NET方法

.net core 根据数据库计划调用.NET方法,.net-core,scheduled-tasks,scheduler,hangfire,asp.net-core-hosted-services,.net Core,Scheduled Tasks,Scheduler,Hangfire,Asp.net Core Hosted Services,我正在开发一个应用程序,它允许用户定义他们自己的时间表,以确定何时执行某个操作。该操作需要在计划的时间触发,它将有效地调用.NET核心应用程序中的方法 我已经回顾了许多推荐的方法,例如下面这一种,它讨论了如何使用IHostedService- 我也看过 这些方法的问题,以及我在其他文章中看到的大多数讨论,是它们真正关注的是根据预定义的计划运行任务(例如,每2小时运行一个任务),而不是定制的动态计划。我正在寻找一种方法来解释如何从应用程序中连续轮询数据库调度(或者做一些更有效的等效操作),以便触发

我正在开发一个应用程序,它允许用户定义他们自己的时间表,以确定何时执行某个操作。该操作需要在计划的时间触发,它将有效地调用.NET核心应用程序中的方法

我已经回顾了许多推荐的方法,例如下面这一种,它讨论了如何使用
IHostedService
-

我也看过

这些方法的问题,以及我在其他文章中看到的大多数讨论,是它们真正关注的是根据预定义的计划运行任务(例如,每2小时运行一个任务),而不是定制的动态计划。我正在寻找一种方法来解释如何从应用程序中连续轮询数据库调度(或者做一些更有效的等效操作),以便触发操作


什么是检查数据库计划并将其连接到我的.NET核心应用程序中可以在计划时间运行所需操作的内容的有效方法?有没有一种方法可以使用
IHostedService
或HangFire来实现这一点?那么,是否有任何文章提供了一个清晰的例子来说明如何做到这一点?

这是一个有趣的问题。那么我们是如何处理团队中类似的事情的呢。我们使用了一个存储所有动作的表。例如,要获得这些列,请执行以下操作:

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 core console应用程序的工作流,该应用程序将从数据库中读取:

define the timer to read the table ----> reads DB ----> calls your method

当然,这种方法更为硬编码,但同时它不依赖于另一个框架或库。

你说的“定义他们自己的时间表”是什么意思?它是可以翻译成CRON表达式的东西吗?如果是这样,Hangfire可以处理it@jbl-用户可以指定预定操作的特定日期/时间。日期/时间作为“计划”的一部分存储在数据库中。因此,需要能够动态地“读取”该计划,以便在计划时间调用.NET核心应用程序中的方法。hangfire计划方法似乎适合这种需要:谢谢@jbl。这似乎更适合于需要按计划执行的作业,而不是在指定时间调用方法。我现在正在看Coravel,因为它似乎适合我的用例-