0
RxReactive Extensions          Юрий Муленко              Betgenius
RxБиблиотека для написанияасинхронных, event-basedпрограмм.Почему «реактивные»расширения?
Интерактивный подход (pull)                  Окружающая среда
Реактивный подход (push)                Окружающая среда
Push для пользователя•   RSS клиенты•   Twitter клиенты•   Стены в социальных сетях•   ICQ/MSN/Google Talk•   Календари/бу...
Push для программиста•   Windows message loop•   Driver interrupt•   Observer pattern•   Ajax / APM / callbacks•   Events•...
Где удобней применять Push• Event-driven• Complex Event Processing• Много асинхронных операций• Fraud-detection• Stock ope...
С Push сложней работать• Отсутствует унифицированный  API для Push модели• Нет средств для композиции• Асинхронность – все...
RxБиблиотека для написанияасинхронных, event-basedпрограмм при помощиobservable коллекций.
Коллекции = pull
Observable = push
Observable коллекции• Интерфейсы  IEnumerable/IObservable  двойственны =>• Взаимозаменяемы =>• Действуют те же законы =>• ...
Подписка
Создание• FromEvent / FromEventPattern• FromAsyncPattern    – BeginXXX/EndXXX    – Делегаты•   Enumerable.ToObservable()• ...
Создание из события
LINQ - Select
LINQ - Where
Специфичные расширения• Для композиции• С временной компонентой
Шариковые диаграммы                          Время   Событие   OnNext   Ошибка    OnError   Конец     OnComplete
Примитивы.Never<T>().Empty<T>().Return<T>(T value).Throw<T>(Exception)
IO<T> Merge(IO<T> x, IO<T> y)XYZ
IO<T> Concat(IO<T> x, IO<T> y)XYZ
IO<Z> Zip(IO<X> x, IO<Y> y,           Func<X, Y, Z> f)XY         f   f       fZ
IO<X> Retry(IO<X> x, int count)X          YZ
IO<X> Sample(IO<X> x, TimeSpan           interval)X      interval   intervalZ
И много другихSum Count Any Min Max ScanReplay Publish    SkipWhile ThenSwitch Interval Delay ThrottleSample Buffer TimeIn...
DEMO
Rx версии• .NET 3.5• .NET 4.0• Текущая 1.0SP1• Experimental 1.1• Доступна 2.0 beta• Rx for JavaScripthttp://msdn.microsoft...
Ресурсы• Rx @ Data Developer Centerhttp://msdn.microsoft.com/en-us/data/gg577609• Rx @ Channel 9http://channel9.msdn.com/t...
СпасибоFeedback ? Part 2 ?
Upcoming SlideShare
Loading in...5
×

Rx

262

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
262
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
5
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide
  • Чебурашка, дай полотенце
  • Внимание на доску
  • Transcript of "Rx"

    1. 1. RxReactive Extensions Юрий Муленко Betgenius
    2. 2. RxБиблиотека для написанияасинхронных, event-basedпрограмм.Почему «реактивные»расширения?
    3. 3. Интерактивный подход (pull) Окружающая среда
    4. 4. Реактивный подход (push) Окружающая среда
    5. 5. Push для пользователя• RSS клиенты• Twitter клиенты• Стены в социальных сетях• ICQ/MSN/Google Talk• Календари/будильники• Формулы в Excel
    6. 6. Push для программиста• Windows message loop• Driver interrupt• Observer pattern• Ajax / APM / callbacks• Events• MVC ? Node JS?
    7. 7. Где удобней применять Push• Event-driven• Complex Event Processing• Много асинхронных операций• Fraud-detection• Stock operations
    8. 8. С Push сложней работать• Отсутствует унифицированный API для Push модели• Нет средств для композиции• Асинхронность – всегда проблемы• Нет контроля над окружающей средой
    9. 9. RxБиблиотека для написанияасинхронных, event-basedпрограмм при помощиobservable коллекций.
    10. 10. Коллекции = pull
    11. 11. Observable = push
    12. 12. Observable коллекции• Интерфейсы IEnumerable/IObservable двойственны =>• Взаимозаменяемы =>• Действуют те же законы =>• Можно рассматривать поток событий как коллекцию =>• LINQ !!!
    13. 13. Подписка
    14. 14. Создание• FromEvent / FromEventPattern• FromAsyncPattern – BeginXXX/EndXXX – Делегаты• Enumerable.ToObservable()• Subject• Своя имплементация• Другие Observable• ...
    15. 15. Создание из события
    16. 16. LINQ - Select
    17. 17. LINQ - Where
    18. 18. Специфичные расширения• Для композиции• С временной компонентой
    19. 19. Шариковые диаграммы Время Событие OnNext Ошибка OnError Конец OnComplete
    20. 20. Примитивы.Never<T>().Empty<T>().Return<T>(T value).Throw<T>(Exception)
    21. 21. IO<T> Merge(IO<T> x, IO<T> y)XYZ
    22. 22. IO<T> Concat(IO<T> x, IO<T> y)XYZ
    23. 23. IO<Z> Zip(IO<X> x, IO<Y> y, Func<X, Y, Z> f)XY f f fZ
    24. 24. IO<X> Retry(IO<X> x, int count)X YZ
    25. 25. IO<X> Sample(IO<X> x, TimeSpan interval)X interval intervalZ
    26. 26. И много другихSum Count Any Min Max ScanReplay Publish SkipWhile ThenSwitch Interval Delay ThrottleSample Buffer TimeInterval TimeoutTimestamp Repeat Retry NextOnErrorResumeNext Catch And JoinGroupBy…http://msdn.microsoft.com/en-us/library/hh212048(v=vs.103).aspx
    27. 27. DEMO
    28. 28. Rx версии• .NET 3.5• .NET 4.0• Текущая 1.0SP1• Experimental 1.1• Доступна 2.0 beta• Rx for JavaScripthttp://msdn.microsoft.com/en-us/data/gg577610
    29. 29. Ресурсы• Rx @ Data Developer Centerhttp://msdn.microsoft.com/en-us/data/gg577609• Rx @ Channel 9http://channel9.msdn.com/tags/Rx/• Rx Design Guidelineshttp://go.microsoft.com/fwlink/?LinkID=205219• Rx Hands-on Labshttp://blogs.msdn.com/b/rxteam/archive/2010/07/15/rx-hands-on-labs-published.aspx• (Not yet) 101 Rx Sampleshttp://rxwiki.wikidot.com/101samples• Google/Bing/Blogs
    30. 30. СпасибоFeedback ? Part 2 ?
    1. A particular slide catching your eye?

      Clipping is a handy way to collect important slides you want to go back to later.

    ×