Какие инструменты C # существуют для запуска, постановки в очередь и приоритезации зависимых задач

У меня есть служебное приложение C #, которое взаимодействует с базой данных. Недавно он был переведен с .NET 2.0 на .NET 4.0, поэтому есть много новых инструментов, которые мы могли бы использовать.

Я ищу указатели на подходы к программированию или инструменты / библиотеки для обработки определения задач, настройки задач, от которых они зависят, постановки в очередь, определения приоритетов, отмены и т. Д.

Существуют различные типы услуг:

  • Данные (для получения и обновления)
  • Расчет (заполнить некоторую таблицу результатами расчета данных)
  • Отчетность

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

if (IsSomeDependentCalculationRequired())
    PerformDependentCalculation();  // which may trigger further calculations
GenerateRequestedReport();

Кроме того, любая модификация Data , вероятно, установит флаг Требуется на некоторых из службы Calculation или Reporting (так что отчет может быть устаревшим до того, как он будет завершен). Задачи различаются по продолжительности от нескольких секунд до пары минут и выполняются в транзакциях.

До сих пор это работало нормально, но плохо масштабируется. Есть фундаментальные проблемы дизайна, и я хочу переписать эту часть кода. Например, если два пользователя запрашивают один и тот же отчет в одинаковое время, зависимые задачи будут выполнены дважды.Кроме того, в настоящее время нет возможности отменить выполняемую задачу. Трудно поддерживать зависимые задачи и т. Д.

Я НЕ ищу предложений о том, как реализовать исправление. Скорее я ищу указатели на то, какие инструменты / библиотеки я бы использовал для такого рода требований, если бы начинал работать с .NET 4 с нуля. Подходит ли это для Windows Workflow ? Для этого ли Futures ? Есть ли другие библиотеки, которые мне следует изучить, или книги или сообщения в блогах, которые я должен прочитать?

Изменить: А как насчет Rx Reactive Extensions ?

10
задан shamp00 12 February 2012 в 16:32
поделиться