У меня есть приложение-служба C#, которое взаимодействует с базой данных. Он был недавно перенесен с .NET 2.0 на .NET 4.0, поэтому есть много новых инструментов, которые мы могли бы использовать.Какие средства C# существуют для запуска, очереди, определения приоритетов зависимых задач
Я ищу указатели на подходы программирования или инструменты/библиотеки для обработки определения задач, конфигурирование, какие задачи они зависят, очереди, приоритеты, отмена и т.д.
Существуют различные виды услуг:
- данные (для извлечения и обновления)
- расчета (заселить некоторую таблицу с результатами расчета по данным)
- Отчетность
Этих услуг часто зависит друг от друга и запускается по требованию, т.е. отчетность задачи, вероятно, есть код внутри него, такие как
if (IsSomeDependentCalculationRequired())
PerformDependentCalculation(); // which may trigger further calculations
GenerateRequestedReport();
Кроме того, любые Данные модификация может установить флаг Required
на некоторых из Расчет или Репортаж, (поэтому отчет может быть устаревшим до его завершения). Задачи варьируются от нескольких секунд до нескольких минут и выполняются в транзакциях.
Это до сих пор работало нормально, но оно плохо масштабируется. Есть фундаментальные проблемы с дизайном, и я хочу переписать эту часть кода. Например, если два пользователя запросят один и тот же отчет в одинаковые моменты времени, зависимые задачи будут выполняться дважды. Кроме того, в настоящее время нет способа отменить выполняемую задачу. Трудно поддерживать зависимые задачи и т. Д.
Я НЕ ищу предложения о том, как реализовать исправление. Скорее, я ищу указатели на то, какие инструменты/библиотеки я буду использовать для такого требования, если я начинаю с .NET 4 с нуля. Будет ли это хорошим кандидатом для Windows Workflow? Это то, для чего нужны Futures? Есть ли какие-нибудь другие библиотеки, на которые я должен смотреть, или книги или сообщения в блогах, которые я должен прочитать?
Редактировать: 0 приблизительно Rx Reactive Extensions?
Основываясь на демонстрации, которую я смотрел на Workflow, это похоже на хорошее соответствие вашим требованиям, но поскольку я на самом деле не использовал ее сам, я предлагаю это как комментарий, а не ответ ... для чего это стоит. –
Это, вероятно, полезно, если вы можете прокомментировать отдельные ответы немного больше. Таким образом, мы можем разработать правильное направление. – usr
Что относительно [Rx Reactive Extensions] (http://msdn.microsoft.com/en-us/data/gg577609)? Это лучший подход для моих требований? – shamp00