0

我正在开发一个应用程序,该应用程序允许用户定义他们自己的时间表,以便执行某个操作。该操作需要在预定时间触发,它将有效地调用我的 .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 应用程序中可以在计划时间运行所需操作的有效方法是什么?有没有办法可以使用 anIHostedService或 HangFire 来做到这一点?那么是否有任何文章提供了如何做到这一点的明确示例?

4

1 回答 1

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

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

于 2020-01-08T07:35:11.147 回答