пятница, 20 мая 2011 г.

Events vs. Rx

Есть замечательная библиотека «Reactive Extensions» (Rx) от Microsoft, которая предоставляет примитивы для реактивного программирования (в этой библиотеке вообще много всякого вкусного, но об этом как-нибудь в другой раз). В частности Rx позволяет представить .NET события в виде специальных коллекций — observable-коллекций. Такие коллекции представляют последовательность событий в виде потока данных. Самое замечательное, что с этими observable-коллекциями можно работать с помощью LINQ, так же как и с обычными коллекциями.

В этом посте я хочу сравнить два решения одной и той же задачи. Одна реализация строится на классических событиях; вторая — на observable-коллекциях из библиотеки Rx.