Rx

382 views

Published on

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

  • Be the first to like this

No Downloads
Views
Total views
382
On SlideShare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
5
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide
  • Чебурашка, дай полотенце
  • Внимание на доску
  • 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 ?

    ×