Поговорим немного о TPL Dataflow.
Эта библиотека, позволяющая повысить производительность и устойчивость параллельных приложений.
Для .Net Framework 4.0 и 4.5 библиотека поставляется посредством NuGet.
Подход, используемый в TPL Dataflow, состоит в следующем:
Строится вычислительный конвейер, состоящий из множества вычислительных блоков, работающих параллельно и независимо друг от друга, и обменивающихся информацией посредством асинхронных сообщений.
В TPL Dataflow используется парадигма программирования потоков данных: Вики
В TPL DataFlow существуют 3 основных вида блоков:
- Блоки источники - источники данных, из которых можно читать.
- Блоки приёмкники - приёмники данных, в которых можно писать.
- Блоки распространители - являются одновременно и источниками и приёмниками данных.
Блоки можно связывать, образуя вычислительные конвейеры. Один блок-источник можно связывать с множеством блоков-приёмников. Один блок-приёмник можно связывать с множеством блоков-источников. В методе связывания источника с целевым объектом LinkTo, можно указать делегат, который определяет, принимает или отклоняет целевой блок сообщение в зависимости от содержания этого сообщения. Механизм фильтрации позволяет гарантировать, что блок потока данных будет получать только определенные значения.
Существует 3 категории блоков: буферные, исполнительные, группирующие.
- Блоки буферизации хранят данные для использования блоками потребителями данных.
- Исполнительные блоки выполняют заданный делегат над каждым принятым сообщением.
- Группирующие блоки объединяют данные от множества источников с разными ограничениями.
Практический пример.