Programowanie reaktywne na 
platformie Windows 
Autor: Maciej Zbrzezny 
Rule Financial 
2014.11.23 
© Rule Financial 2014 ...
O mnie 
● Nazywam się Maciej Zbrzezny 
● Pracuje w firmie Rule Financial. 
● Tworzę oprogramowanie wykorzystujące 
platfor...
Dla kogo? 
● Czy zdarzyło Ci się tworzyć aplikacje, które 
wykorzystywały wywołania asynchroniczne? 
● Czy, wywołania asyn...
Problem: pobieranie danych 
Daj mi Dane 
Przetwarzam 
Dane 
© Rule Financial 2014 4
Asynchroniczność 
● Dzisiejszy świat jest asynchroniczny, a my nie chcemy 
być blokowani 
● Źródeł danych może być wiele, ...
Asynchroniczność – potencjalne rozwiązania 
● Osobny thread / task 
● Asynchronous Programming Model (IAsyncResult 
BeginD...
Ułatwmy sobie życie 
© Rule Financial 2014 7
Misja RX 
The Reactive Extensions (Rx)... 
...is a library to compose asynchronous and event-based 
programs using observa...
Rx … 
● Pozwala na uproszczenie kodu związanego z 
programowaniem asynchronicznym oraz opartym na 
zdarzeniach, 
● Daje mo...
Gdzie można znaleźć RX? 
● Nie ma RX w .NET framework, ale: 
– Można dla nich pobrać (najlepiej poprzez Nuget'a – szukamy ...
© Rule Financial 2014 11
Obserwowanie i subskrypcja zamiast 
przeglądania 
Jestem zainteresowany 
Danymi (subscribe) 
Przetwarzam 
Dane 
Error 
Dan...
Obserwowanie i subskrypcja zamiast 
przeglądania 
● Konstruujemy / pobieramy 
IObservable. (W Rx jest wiele metod 
pomocni...
Operatory LINQ na IObservable 
Where Skip Take Select 
© Rule Financial 2014 14 
IObse 
rvable 
<T> 
IObse 
rvable 
<T>
Komponowanie strumieni… 
• Amb 
• Concat 
• SelectMany 
• Merge 
• Zip 
--A--A--A--| 
----B--B--B--| 
--A--A--A--| 
------...
Do dzieła…sprawdźmy... 
© Rule Financial 2014 16
ReactiveUI (MVVM framework) 
● Pozwala na wykorzystanie Reactive Extensions to 
tworzenia w pełni testowalnych UI, dla róż...
ReactiveUI - podstawy 
● ViewModel dziedziczy po ReactiveObject 
● Properties: 
– Read/write 
– Read-only 
– Output-proper...
Do dzieła…sprawdźmy... 
© Rule Financial 2014 19
Gdzie reactive extensions są wykorzystywane 
● Bing 
● Cortana 
● Netflix 
● Github for Windows 
© Rule Financial 2014 20
Literatura 
Channel 9 a zwłaszcza: 
Mike Taulty - Reactive Extensions for .NET for the Rest of Us: 
http://channel9.msdn...
Dziękuję za uwagę. 
Pytania? 
https://github.com/maciej-progtech/WindowsReaciveProgramming_ITAD2014 
© Rule Financial 2014...
© Rule Financial 2014 23
Upcoming SlideShare
Loading in …5
×

Programowanie reaktywne na platformie windows(ITAD)

1,816 views

Published on

Presentation about Reactive Extension (RX) and ReactiveUI presented on IT Academic Days @ Technical University in Lodz.

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,816
On SlideShare
0
From Embeds
0
Number of Embeds
743
Actions
Shares
0
Downloads
6
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide
  • 4
  • 12
  • 13
  • 14
  • 15
  • Programowanie reaktywne na platformie windows(ITAD)

    1. 1. Programowanie reaktywne na platformie Windows Autor: Maciej Zbrzezny Rule Financial 2014.11.23 © Rule Financial 2014 1
    2. 2. O mnie ● Nazywam się Maciej Zbrzezny ● Pracuje w firmie Rule Financial. ● Tworzę oprogramowanie wykorzystujące platformę .NET(głównie C#). ● Autor bloga „Programowanie i Technologie” (http://maciej-progtech.blogspot.com/). ● MCP ● maciejzbrzezny@gmail.com ● @MaciejZbrzezny © Rule Financial 2014 2
    3. 3. Dla kogo? ● Czy zdarzyło Ci się tworzyć aplikacje, które wykorzystywały wywołania asynchroniczne? ● Czy, wywołania asynchroniczne sprawiły problemy? ● Czy wolałbyś otrzymywać dane zamiast o każdą daną się dopraszać? ● Czy znasz LINQ i chciałbyś go wykorzystywać w większym zakresie? © Rule Financial 2014 3
    4. 4. Problem: pobieranie danych Daj mi Dane Przetwarzam Dane © Rule Financial 2014 4
    5. 5. Asynchroniczność ● Dzisiejszy świat jest asynchroniczny, a my nie chcemy być blokowani ● Źródeł danych może być wiele, co w przypadku, gdy musimy połączyć dane z wielu z nich ● Możemy nie być zainteresowaniu wszystkimi danymi jak je wybierać, czy filtrować ● Jesteśmy przyzwyczajeni do prostych rozwiązań, najłatwiej przeglądać po prostu kolekcje danych © Rule Financial 2014 5
    6. 6. Asynchroniczność – potencjalne rozwiązania ● Osobny thread / task ● Asynchronous Programming Model (IAsyncResult BeginDoSomething, EndDoSomething) ● Event-based Asynchronous Programming (DoSomethingAsync, event DoSomethingCompletedEventHandler, DoSomethingCompleted, AsyncCompletedEventArgs) ● Task-based Asynchronous Programming (async/await) ● Inne? © Rule Financial 2014 6
    7. 7. Ułatwmy sobie życie © Rule Financial 2014 7
    8. 8. Misja RX The Reactive Extensions (Rx)... ...is a library to compose asynchronous and event-based programs using observable collections and LINQ-style query operators. © Rule Financial 2014 8
    9. 9. Rx … ● Pozwala na uproszczenie kodu związanego z programowaniem asynchronicznym oraz opartym na zdarzeniach, ● Daje możliwość komponowania (łączenia) różnych asynchronicznych operacji oraz ich wyników. ● Oferuje inne podejście do kolekcji oraz zdarzeń. W Rx są one traktowane jako źródła danych, które możemy obserwować. © Rule Financial 2014 9
    10. 10. Gdzie można znaleźć RX? ● Nie ma RX w .NET framework, ale: – Można dla nich pobrać (najlepiej poprzez Nuget'a – szukamy RX) – Od .NET 4.0 przygotowano już pewne ułatwienia ● Rx jest też dostępne dla: – Silverlight (od wer. 3, starsze wersje RX) – Windows Phone (od wer. 7, dostępne już w ROM) – XNA (od wer. 3) – RxJS - Reactive Extensions for JavaScript (on GitHub) – RxJava – Reactive Extensions for the JVM (on GitHub) – Xamarin platform © Rule Financial 2014 10
    11. 11. © Rule Financial 2014 11
    12. 12. Obserwowanie i subskrypcja zamiast przeglądania Jestem zainteresowany Danymi (subscribe) Przetwarzam Dane Error Dane KONIEC © Rule Financial 2014 12
    13. 13. Obserwowanie i subskrypcja zamiast przeglądania ● Konstruujemy / pobieramy IObservable. (W Rx jest wiele metod pomocniczych tworzące IObservable z tablic, list, zdarzeń, strumieni, ….) ● Subskrybujemy przekazując nasz obserwator (IObserver) lub odpowiednie delegaty. ● Subskrybować można na różnych wątkach (CurrentThreadScheduler, ImmediateScheduler, NewThreadScheduler, TaskPoolScheduler, ThreadPoolScheduler, CoreDispatcherScheduler) ● Wykonujemy „Dispose” na subskrypcji której dłużej nie potrzebujemy © Rule Financial 2014 13 I O b s e r v a b l e < T > client OnNext() OnNext() OnNext() OnNext() OnNext() OnNext()
    14. 14. Operatory LINQ na IObservable Where Skip Take Select © Rule Financial 2014 14 IObse rvable <T> IObse rvable <T>
    15. 15. Komponowanie strumieni… • Amb • Concat • SelectMany • Merge • Zip --A--A--A--| ----B--B--B--| --A--A--A--| -----------B--B--B--| • CombineLatest • ForkJoin Amb --A--A--A--| Concat --A--A--A--B--B--B--| --A--B--C--| --X--Y--Z--| SelectMany -(AX)(AY)(BX)(BY) (AZ)(CX)(BZ)(CY)(CZ)| -A--B--C---| --X--Y--Z--| Merge --AX-BY-CZ--| -A--B--C---| --X--Y--Z--| Zip -(AX)-(BY)-(CZ)--| -A----B--C--| -UWXYZ--| CombineLatest -(AU)(AW)(BX)(BY)(CZ)| -----------(CZ)--| -A----B--C--| -UWXYZ--| ForkJoin © Rule Financial 2014 15
    16. 16. Do dzieła…sprawdźmy... © Rule Financial 2014 16
    17. 17. ReactiveUI (MVVM framework) ● Pozwala na wykorzystanie Reactive Extensions to tworzenia w pełni testowalnych UI, dla różnych platform (desktopowych i mobilnych). ● Platformy: ● Xamarin.iOS ● Xamarin.Android ● Xamarin.Mac ● WPF ● Windows Forms ● Windows Phone 8 ● Windows Store Apps © Rule Financial 2014 17
    18. 18. ReactiveUI - podstawy ● ViewModel dziedziczy po ReactiveObject ● Properties: – Read/write – Read-only – Output-properties ● Reactive commands © Rule Financial 2014 18
    19. 19. Do dzieła…sprawdźmy... © Rule Financial 2014 19
    20. 20. Gdzie reactive extensions są wykorzystywane ● Bing ● Cortana ● Netflix ● Github for Windows © Rule Financial 2014 20
    21. 21. Literatura Channel 9 a zwłaszcza: Mike Taulty - Reactive Extensions for .NET for the Rest of Us: http://channel9.msdn.com/Events/DevDays/DevDays-2011- Netherlands/Devdays014 Bart de Smet - DevCamp 2010 Keynote - Rx: Curing your asynchronous programming blues: http://channel9.msdn.com/Blogs/codefest/DC2010T0100-Keynote-Rx-curing- your-asynchronous-programming-blues Data Developer Center > Learn > Reactive Extensions (Rx) > Beginner's Guide to Reactive Extensions for .NET (http://msdn.microsoft.com/en-us/data/gg577611) a zwłaszcza Design Guidelines. http://jen20.com/ http://www.reactiveui.net © Rule Financial 2014 21
    22. 22. Dziękuję za uwagę. Pytania? https://github.com/maciej-progtech/WindowsReaciveProgramming_ITAD2014 © Rule Financial 2014 22
    23. 23. © Rule Financial 2014 23

    ×