SlideShare a Scribd company logo
1 of 23
Programowanie reaktywne na 
platformie Windows 
Autor: Maciej Zbrzezny 
Rule Financial 
2014.11.23 
© Rule Financial 2014 1
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
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
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, 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
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
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 observable collections and LINQ-style 
query operators. 
© Rule Financial 2014 8
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
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
© Rule Financial 2014 11
Obserwowanie i subskrypcja zamiast 
przeglądania 
Jestem zainteresowany 
Danymi (subscribe) 
Przetwarzam 
Dane 
Error 
Dane 
KONIEC 
© Rule Financial 2014 12
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()
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--| 
-----------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
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óż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
ReactiveUI - podstawy 
● ViewModel dziedziczy po ReactiveObject 
● Properties: 
– Read/write 
– Read-only 
– Output-properties 
● Reactive commands 
© Rule Financial 2014 18
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.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
Dziękuję za uwagę. 
Pytania? 
https://github.com/maciej-progtech/WindowsReaciveProgramming_ITAD2014 
© Rule Financial 2014 22
© Rule Financial 2014 23

More Related Content

Viewers also liked

Uu 09 2009
Uu 09 2009Uu 09 2009
Uu 09 2009ourida
 
Introducing Judith Gunn
Introducing Judith GunnIntroducing Judith Gunn
Introducing Judith GunnJudith Gunn
 
O que é um projeto rede de projetos
O que é um projeto   rede de projetosO que é um projeto   rede de projetos
O que é um projeto rede de projetosAlfweb Sistemas
 
Netvibes IoT DevCon
Netvibes IoT DevConNetvibes IoT DevCon
Netvibes IoT DevConFlorent Solt
 
Brochure finanziamenti e fondi europei per il turismo
Brochure finanziamenti e fondi europei per il turismoBrochure finanziamenti e fondi europei per il turismo
Brochure finanziamenti e fondi europei per il turismoFTourism & Marketing
 
Photo Album Sharon
Photo Album SharonPhoto Album Sharon
Photo Album Sharonguest47c090c
 
Better Know Your Butterfly: Hairstreaks, Satyrium sp
Better Know Your Butterfly: Hairstreaks, Satyrium spBetter Know Your Butterfly: Hairstreaks, Satyrium sp
Better Know Your Butterfly: Hairstreaks, Satyrium spMary Legg
 
Cum sa Creezi Oferte Comerciale de Impact pentru Mediul Online
Cum sa Creezi Oferte Comerciale de Impact pentru Mediul OnlineCum sa Creezi Oferte Comerciale de Impact pentru Mediul Online
Cum sa Creezi Oferte Comerciale de Impact pentru Mediul OnlineeComunitate.ro
 
Instrumente tic - sistem pentru planificarea resurselor întreprinderii (ERP)
Instrumente tic -  sistem pentru planificarea resurselor întreprinderii (ERP)Instrumente tic -  sistem pentru planificarea resurselor întreprinderii (ERP)
Instrumente tic - sistem pentru planificarea resurselor întreprinderii (ERP)eComunitate.ro
 
בניית האגף החדש בספריה
בניית האגף החדש בספריה    בניית האגף החדש בספריה
בניית האגף החדש בספריה iris
 

Viewers also liked (17)

Uu 09 2009
Uu 09 2009Uu 09 2009
Uu 09 2009
 
It6
It6It6
It6
 
Strengthening pensions: the economic context
Strengthening pensions: the economic contextStrengthening pensions: the economic context
Strengthening pensions: the economic context
 
Inclusió digital
Inclusió digitalInclusió digital
Inclusió digital
 
Introducing Judith Gunn
Introducing Judith GunnIntroducing Judith Gunn
Introducing Judith Gunn
 
O que é um projeto rede de projetos
O que é um projeto   rede de projetosO que é um projeto   rede de projetos
O que é um projeto rede de projetos
 
Netvibes IoT DevCon
Netvibes IoT DevConNetvibes IoT DevCon
Netvibes IoT DevCon
 
objetivos
objetivosobjetivos
objetivos
 
Halatujunegara
HalatujunegaraHalatujunegara
Halatujunegara
 
Brochure finanziamenti e fondi europei per il turismo
Brochure finanziamenti e fondi europei per il turismoBrochure finanziamenti e fondi europei per il turismo
Brochure finanziamenti e fondi europei per il turismo
 
Photo Album Sharon
Photo Album SharonPhoto Album Sharon
Photo Album Sharon
 
Better Know Your Butterfly: Hairstreaks, Satyrium sp
Better Know Your Butterfly: Hairstreaks, Satyrium spBetter Know Your Butterfly: Hairstreaks, Satyrium sp
Better Know Your Butterfly: Hairstreaks, Satyrium sp
 
Cum sa Creezi Oferte Comerciale de Impact pentru Mediul Online
Cum sa Creezi Oferte Comerciale de Impact pentru Mediul OnlineCum sa Creezi Oferte Comerciale de Impact pentru Mediul Online
Cum sa Creezi Oferte Comerciale de Impact pentru Mediul Online
 
Seniour
SeniourSeniour
Seniour
 
Instrumente tic - sistem pentru planificarea resurselor întreprinderii (ERP)
Instrumente tic -  sistem pentru planificarea resurselor întreprinderii (ERP)Instrumente tic -  sistem pentru planificarea resurselor întreprinderii (ERP)
Instrumente tic - sistem pentru planificarea resurselor întreprinderii (ERP)
 
בניית האגף החדש בספריה
בניית האגף החדש בספריה    בניית האגף החדש בספריה
בניית האגף החדש בספריה
 
Prefixes
PrefixesPrefixes
Prefixes
 

Similar to Programowanie reaktywne na platformie windows(ITAD)

Wjug from java to big data
Wjug   from java to big dataWjug   from java to big data
Wjug from java to big dataPiotr Guzik
 
infraxstructure: Rafał Stańczak "Postępujący rozwój infrastruktury na potrze...
infraxstructure: Rafał Stańczak  "Postępujący rozwój infrastruktury na potrze...infraxstructure: Rafał Stańczak  "Postępujący rozwój infrastruktury na potrze...
infraxstructure: Rafał Stańczak "Postępujący rozwój infrastruktury na potrze...PROIDEA
 
Modsecurity-czy-Twoj-WAF-to-potrafi-Leszek-Mis-Linux-Polska
Modsecurity-czy-Twoj-WAF-to-potrafi-Leszek-Mis-Linux-PolskaModsecurity-czy-Twoj-WAF-to-potrafi-Leszek-Mis-Linux-Polska
Modsecurity-czy-Twoj-WAF-to-potrafi-Leszek-Mis-Linux-PolskaLeszek Mi?
 
PLNOG16: Nowe założenia dla zbieranie logów, statystyk i alertów, Maciej Kałk...
PLNOG16: Nowe założenia dla zbieranie logów, statystyk i alertów, Maciej Kałk...PLNOG16: Nowe założenia dla zbieranie logów, statystyk i alertów, Maciej Kałk...
PLNOG16: Nowe założenia dla zbieranie logów, statystyk i alertów, Maciej Kałk...PROIDEA
 
Websites vs Cloud Services - OLMUG
Websites vs Cloud Services - OLMUGWebsites vs Cloud Services - OLMUG
Websites vs Cloud Services - OLMUGBart Zaremba
 
[WHUG] Wielki brat patrzy - czyli jak zbieramy dane o użytkownikach allegro
[WHUG] Wielki brat patrzy - czyli jak zbieramy dane o użytkownikach allegro[WHUG] Wielki brat patrzy - czyli jak zbieramy dane o użytkownikach allegro
[WHUG] Wielki brat patrzy - czyli jak zbieramy dane o użytkownikach allegroallegro.tech
 
Aplikacje natywne dla Kubernetes z wykorzystaniem OpenShift Serverless - Wars...
Aplikacje natywne dla Kubernetes z wykorzystaniem OpenShift Serverless - Wars...Aplikacje natywne dla Kubernetes z wykorzystaniem OpenShift Serverless - Wars...
Aplikacje natywne dla Kubernetes z wykorzystaniem OpenShift Serverless - Wars...Chris Suszyński
 
Migracja xa 6.5 7.6
Migracja xa 6.5 7.6Migracja xa 6.5 7.6
Migracja xa 6.5 7.6Pawel Serwan
 
Microsoft Azure dla IT Pro
Microsoft Azure dla IT ProMicrosoft Azure dla IT Pro
Microsoft Azure dla IT ProLukasz Kaluzny
 
PLNOG16: Budowa DC Świadczenie usług dla klientów, Łukasz Bromirski, Piotr ...
PLNOG16: Budowa DC Świadczenie usług dla klientów, Łukasz Bromirski, Piotr ...PLNOG16: Budowa DC Świadczenie usług dla klientów, Łukasz Bromirski, Piotr ...
PLNOG16: Budowa DC Świadczenie usług dla klientów, Łukasz Bromirski, Piotr ...PROIDEA
 
Projektowanie wysokowydajnych i skalowalnych serwisów WWW - Warstwa aplikacji
Projektowanie wysokowydajnych i skalowalnych serwisów WWW - Warstwa aplikacjiProjektowanie wysokowydajnych i skalowalnych serwisów WWW - Warstwa aplikacji
Projektowanie wysokowydajnych i skalowalnych serwisów WWW - Warstwa aplikacjiAntoni Orfin
 
Publikacja usług Exchange 2013 w internecie. Co dalej bez TMG?
Publikacja usług Exchange 2013 w internecie. Co dalej bez TMG?Publikacja usług Exchange 2013 w internecie. Co dalej bez TMG?
Publikacja usług Exchange 2013 w internecie. Co dalej bez TMG?Konrad Sagala
 
Co nowego w ASP.NET MVC 4?
Co nowego w ASP.NET MVC 4?Co nowego w ASP.NET MVC 4?
Co nowego w ASP.NET MVC 4?tkryskiewicz
 
StreamInsight - Analiza danych w ruchu
StreamInsight - Analiza danych w ruchuStreamInsight - Analiza danych w ruchu
StreamInsight - Analiza danych w ruchuWlodek Bielski
 

Similar to Programowanie reaktywne na platformie windows(ITAD) (20)

Wjug from java to big data
Wjug   from java to big dataWjug   from java to big data
Wjug from java to big data
 
infraxstructure: Rafał Stańczak "Postępujący rozwój infrastruktury na potrze...
infraxstructure: Rafał Stańczak  "Postępujący rozwój infrastruktury na potrze...infraxstructure: Rafał Stańczak  "Postępujący rozwój infrastruktury na potrze...
infraxstructure: Rafał Stańczak "Postępujący rozwój infrastruktury na potrze...
 
Środowisko PWA
Środowisko PWAŚrodowisko PWA
Środowisko PWA
 
Modsecurity-czy-Twoj-WAF-to-potrafi-Leszek-Mis-Linux-Polska
Modsecurity-czy-Twoj-WAF-to-potrafi-Leszek-Mis-Linux-PolskaModsecurity-czy-Twoj-WAF-to-potrafi-Leszek-Mis-Linux-Polska
Modsecurity-czy-Twoj-WAF-to-potrafi-Leszek-Mis-Linux-Polska
 
PLNOG16: Nowe założenia dla zbieranie logów, statystyk i alertów, Maciej Kałk...
PLNOG16: Nowe założenia dla zbieranie logów, statystyk i alertów, Maciej Kałk...PLNOG16: Nowe założenia dla zbieranie logów, statystyk i alertów, Maciej Kałk...
PLNOG16: Nowe założenia dla zbieranie logów, statystyk i alertów, Maciej Kałk...
 
Azure 101 warsztat v 1.1
Azure 101 warsztat v 1.1Azure 101 warsztat v 1.1
Azure 101 warsztat v 1.1
 
Websites vs Cloud Services - OLMUG
Websites vs Cloud Services - OLMUGWebsites vs Cloud Services - OLMUG
Websites vs Cloud Services - OLMUG
 
Wydajny frontend 2023
Wydajny frontend 2023Wydajny frontend 2023
Wydajny frontend 2023
 
[WHUG] Wielki brat patrzy - czyli jak zbieramy dane o użytkownikach allegro
[WHUG] Wielki brat patrzy - czyli jak zbieramy dane o użytkownikach allegro[WHUG] Wielki brat patrzy - czyli jak zbieramy dane o użytkownikach allegro
[WHUG] Wielki brat patrzy - czyli jak zbieramy dane o użytkownikach allegro
 
Monitoring sieci
Monitoring sieciMonitoring sieci
Monitoring sieci
 
Aplikacje natywne dla Kubernetes z wykorzystaniem OpenShift Serverless - Wars...
Aplikacje natywne dla Kubernetes z wykorzystaniem OpenShift Serverless - Wars...Aplikacje natywne dla Kubernetes z wykorzystaniem OpenShift Serverless - Wars...
Aplikacje natywne dla Kubernetes z wykorzystaniem OpenShift Serverless - Wars...
 
Migracja xa 6.5 7.6
Migracja xa 6.5 7.6Migracja xa 6.5 7.6
Migracja xa 6.5 7.6
 
Jaki framework wybrać
Jaki framework wybraćJaki framework wybrać
Jaki framework wybrać
 
Microsoft Azure dla IT Pro
Microsoft Azure dla IT ProMicrosoft Azure dla IT Pro
Microsoft Azure dla IT Pro
 
PLNOG16: Budowa DC Świadczenie usług dla klientów, Łukasz Bromirski, Piotr ...
PLNOG16: Budowa DC Świadczenie usług dla klientów, Łukasz Bromirski, Piotr ...PLNOG16: Budowa DC Świadczenie usług dla klientów, Łukasz Bromirski, Piotr ...
PLNOG16: Budowa DC Świadczenie usług dla klientów, Łukasz Bromirski, Piotr ...
 
Projektowanie wysokowydajnych i skalowalnych serwisów WWW - Warstwa aplikacji
Projektowanie wysokowydajnych i skalowalnych serwisów WWW - Warstwa aplikacjiProjektowanie wysokowydajnych i skalowalnych serwisów WWW - Warstwa aplikacji
Projektowanie wysokowydajnych i skalowalnych serwisów WWW - Warstwa aplikacji
 
Publikacja usług Exchange 2013 w internecie. Co dalej bez TMG?
Publikacja usług Exchange 2013 w internecie. Co dalej bez TMG?Publikacja usług Exchange 2013 w internecie. Co dalej bez TMG?
Publikacja usług Exchange 2013 w internecie. Co dalej bez TMG?
 
Co nowego w ASP.NET MVC 4?
Co nowego w ASP.NET MVC 4?Co nowego w ASP.NET MVC 4?
Co nowego w ASP.NET MVC 4?
 
Iron Python I Dlr
Iron Python I DlrIron Python I Dlr
Iron Python I Dlr
 
StreamInsight - Analiza danych w ruchu
StreamInsight - Analiza danych w ruchuStreamInsight - Analiza danych w ruchu
StreamInsight - Analiza danych w ruchu
 

Programowanie reaktywne na platformie windows(ITAD)

  • 1. Programowanie reaktywne na platformie Windows Autor: Maciej Zbrzezny Rule Financial 2014.11.23 © Rule Financial 2014 1
  • 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. 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. Problem: pobieranie danych Daj mi Dane Przetwarzam Dane © Rule Financial 2014 4
  • 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. 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. Ułatwmy sobie życie © Rule Financial 2014 7
  • 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. 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. 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. © Rule Financial 2014 11
  • 12. Obserwowanie i subskrypcja zamiast przeglądania Jestem zainteresowany Danymi (subscribe) Przetwarzam Dane Error Dane KONIEC © Rule Financial 2014 12
  • 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. Operatory LINQ na IObservable Where Skip Take Select © Rule Financial 2014 14 IObse rvable <T> IObse rvable <T>
  • 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. Do dzieła…sprawdźmy... © Rule Financial 2014 16
  • 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. ReactiveUI - podstawy ● ViewModel dziedziczy po ReactiveObject ● Properties: – Read/write – Read-only – Output-properties ● Reactive commands © Rule Financial 2014 18
  • 19. Do dzieła…sprawdźmy... © Rule Financial 2014 19
  • 20. Gdzie reactive extensions są wykorzystywane ● Bing ● Cortana ● Netflix ● Github for Windows © Rule Financial 2014 20
  • 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. Dziękuję za uwagę. Pytania? https://github.com/maciej-progtech/WindowsReaciveProgramming_ITAD2014 © Rule Financial 2014 22
  • 23. © Rule Financial 2014 23

Editor's Notes

  1. 4
  2. 12
  3. 13
  4. 14
  5. 15