Rx - Reactive Extensions

Post on 10-May-2015

2.231 views 4 download

description

Slides from my Bleeding Edge 2010 Conference Reactive Extensions Talk.

Transcript of Rx - Reactive Extensions

ANDREJ TOZONMicrosoft MVP: Client App DevANT Andrej Tozon s.p., Ljubljana

@andrejt | andrej@tozon.info | http://tozon.info/blog

Preštevanje zahteva svoj časforeach (Slikca slikca in pokecSlikc){    if (!prjatu.ImaSlikco(slikca))    {        prjatu.MenjajSlikco(slikca);    }}

Preštevanje

IEnumerator

prešteva

IEnumerable

Opazovanje

Opazovalec

opazuje

Opazovanega

Opazovanje

IObserver

opazuje

IObservable

Opazovanje

public interface IObservable<out T>{    IDisposable Subscribe(IObserver<T> observer);}

public interface IObserver<in T>{    void OnNext(T value);    void OnError(Exception error);    void OnCompleted();}

Preštevanje ali opazovanje?

IObserver

opazuje

IObservable

IEnumerator

prešteva

IEnumerable

Eden vleče, drugi poriva

IObserver

IObservable

IEnumerator

IEnumerable

Andrej TozonMicrosoft MVP: Client App DevANT Andrej Tozon s.p., Ljubljana

@andrejt | andrej@tozon.info | http://tozon.info/blog

Rx - Reactive Extensions

Library for composing asynchronous and event-based programs using observable collections

Rx - Reactive Extensions

Library for composing asynchronous and event-based programs using observable collections

Rx - Reactive Extensions

Library for composing asynchronous and event-based programs using observable collections

Rx - Reactive Extensions

Library for composing asynchronous and event-based programs using observable collections

Rx - Reactive Extensions

demo

Kje to dobim?http://tiny.cc/rxnet

.NET FX 3.5 SP1 in 4.0Silverlight 3 in 4Windows Phone 7JavaScript

Kje to dobim?System.Observable.dllIObservable in IObserver sta že vključena v .NET FX 4.0 Core

System.CoreEx.dllSystem.Reactive.dll

System.Interactive.dllEnumerableEx

Operatorji v EnumerableExKonstruktorji

ReturnThrowStartWithGenerateDefer

Enumerable -> Observable -> Enumerablevar o1 = Enumerable.Range(1, 10).ToObservable();var o2 = Enumerable.Range(51, 10).ToObservable();var en = o1.Amb(o2).ToEnumerable();

KombinatorjiConcatRepeatScanSelectMany

ViriRx DevLabs http://tiny.cc/rxnetRx Blog http://blogs.msdn.com/rxteamRx Wiki http://rxwiki.wikidot.com/Channel9 http://channel9.msdn.com/tags/Rx/

Andrej TozonMicrosoft MVP: Client App DevANT Andrej Tozon s.p., Ljubljana

@andrejt | andrej@tozon.info | http://tozon.info/blog

vprašanja?

HVALA