Вызов. NET метод согласно расписанию базы данных - PullRequest
0 голосов
/ 08 января 2020

Я работаю над приложением, которое позволяет пользователям самостоятельно определять расписание, когда будет выполняться определенное действие. Действие должно быть запущено в запланированное время, и оно будет эффективно вызывать метод в моем. NET Базовом приложении.

Я рассмотрел ряд рекомендуемых подходов, например, таких как этот, который обсуждается использование IHostedService - https://blog.maartenballiauw.be/post/2017/08/01/building-a-scheduled-cache-updater-in-aspnet-core-2.html

Я также рассмотрел HangFire .

Проблема с этими подходами, и большинство из обсуждения, которое я видел в других статьях, заключается в том, что они действительно сосредоточены на выполнении задач в соответствии с заранее определенным расписанием (например, выполнение задачи каждые 2 часа), а не на custom, dynamici c график. Я ищу подход, который объясняет, как я могу сделать что-то вроде непрерывного опроса расписания базы данных из приложения (или сделать что-то эквивалентное, это более эффективно), чтобы вызвать действие.

Что такое эффективный способ проверить расписание базы данных и подключить его к чему-нибудь в моем. NET Базовом приложении, которое может выполнить желаемое действие в запланированное время? Есть ли способ, чтобы для этого можно было использовать IHostedService или HangFire? Есть ли какие-нибудь статьи, которые дают наглядный пример того, как это сделать?

1 Ответ

0 голосов
/ 08 января 2020

Это интересный вопрос. Итак, как мы справились с чем-то похожим в нашей команде. Мы использовали таблицу, в которой хранились все действия. Например, чтобы иметь эти столбцы:

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

Этот подход, конечно, более жестко запрограммирован, но в то же время он не зависит от другой среды или библиотеки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...