<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8">
<meta name="generator" content="pdf2htmlEX">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<link rel="stylesheet" href="https://static.pudn.com/base/css/base.min.css">
<link rel="stylesheet" href="https://static.pudn.com/base/css/fancy.min.css">
<link rel="stylesheet" href="https://static.pudn.com/prod/directory_preview_static/6258ff5bbe9ad24cfab22210/raw.css">
<script src="https://static.pudn.com/base/js/compatibility.min.js"></script>
<script src="https://static.pudn.com/base/js/pdf2htmlEX.min.js"></script>
<script>
try{
pdf2htmlEX.defaultViewer = new pdf2htmlEX.Viewer({});
}catch(e){}
</script>
<title></title>
</head>
<body>
<div id="sidebar" style="display: none">
<div id="outline">
</div>
</div>
<div id="pf1" class="pf w0 h0" data-page-no="1"><div class="pc pc1 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="https://static.pudn.com/prod/directory_preview_static/6258ff5bbe9ad24cfab22210/bg1.jpg"><div class="t m0 x1 h2 y1 ff1 fs0 fc0 sc0 ls0 ws0"><span class="fc3 sc0">1</span></div><div class="t m0 x2 h3 y2 ff2 fs1 fc1 sc0 ls0 ws0">An Ev<span class="_ _0"></span>Al<span class="_ _0"></span>uA<span class="_ _1"></span>tion of thE REAc<span class="_ _0"></span>tivE </div><div class="t m0 x2 h3 y3 ff2 fs1 fc1 sc0 ls0 ws0">ExtEnsions (Rx) libRARy As A t<span class="_ _2"></span>ool in </div><div class="t m0 x2 h3 y4 ff2 fs1 fc1 sc0 ls0 ws0">DEsigning AnD coDing As<span class="_ _2"></span>ynchRonous </div><div class="t m0 x2 h3 y5 ff2 fs1 fc1 sc0 ls0 ws0">ApplicA<span class="_ _1"></span>tions</div><div class="t m0 x3 h4 y6 ff3 fs2 fc1 sc0 ls0 ws0">Authors</div><div class="t m0 x3 h4 y7 ff3 fs2 fc2 sc0 ls0 ws0">Samay Mahajan</div><div class="t m0 x3 h4 y8 ff3 fs2 fc2 sc0 ls0 ws0">Basab Das Gupta</div></div><div class="pi" data-data='{"ctm":[1.568627,0.000000,0.000000,1.568627,0.000000,0.000000]}'></div></div>
</body>
</html>
<div id="pf2" class="pf w0 h0" data-page-no="2"><div class="pc pc2 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="https://static.pudn.com/prod/directory_preview_static/6258ff5bbe9ad24cfab22210/bg2.jpg"><div class="t m0 x1 h2 y9 ff1 fs0 fc0 sc0 ls0 ws0">2</div><div class="c x0 ya w2 h5"><div class="t m0 x4 h6 yb ff4 fs3 fc1 sc0 ls0 ws0"><span class="fc3 sc0">ICONIC ILL</span><span class="_ _2"></span><span class="fc3 sc0">USTRA</span><span class="_ _0"></span><span class="fc3 sc0">TION</span></div><div class="t m0 x5 h7 yc ff4 fs4 fc1 sc0 ls0 ws0"><span class="fc3 sc0">TECHNOL</span><span class="_ _2"></span><span class="fc3 sc0">OG</span><span class="fc3 sc0">Y 1</span></div><div class="t m0 x5 h7 yd ff4 fs4 fc1 sc0 ls0 ws0"><span class="fc3 sc0">TECHNOL</span><span class="_ _2"></span><span class="fc3 sc0">OG</span><span class="fc3 sc0">Y 3 </span></div><div class="t m0 x5 h7 ye ff4 fs4 fc1 sc0 ls0 ws0"><span class="fc3 sc0">TECHNOL</span><span class="_ _2"></span><span class="fc3 sc0">OG</span><span class="fc3 sc0">Y 2</span></div></div></div><div class="pi" data-data='{"ctm":[1.568627,0.000000,0.000000,1.568627,0.000000,0.000000]}'></div></div>
<div id="pf3" class="pf w0 h0" data-page-no="3"><div class="pc pc3 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="https://static.pudn.com/prod/directory_preview_static/6258ff5bbe9ad24cfab22210/bg3.jpg"><div class="t m0 x6 h2 y1 ff1 fs0 fc0 sc0 ls0 ws0">3</div><div class="t m0 x7 h8 yf ff1 fs5 fc4 sc0 ls0 ws0">CONTENTS</div><div class="t m0 x7 h6 y10 ff5 fs3 fc5 sc0 ls0 ws1">Executiv<span class="_ _2"></span>e <span class="_ _3"></span>Summary <span class="_ _4"></span> 4</div><div class="t m0 x7 h6 y11 ff5 fs3 fc5 sc0 ls0 ws1">Intended <span class="_ _3"></span>Audienc<span class="_ _2"></span>e <span class="_ _5"></span> 4</div><div class="t m0 x7 h6 y12 ff5 fs3 fc5 sc0 ls0 ws1">What <span class="_ _3"></span>Do <span class="_ _3"></span>Reactiv<span class="_ _2"></span>e <span class="_ _3"></span>Extensions <span class="_ _3"></span>Off<span class="_ _2"></span>er? <span class="_ _6"></span> 5 </div><div class="t m0 x7 h6 y13 ff5 fs3 fc5 sc0 ls0 ws1">Benefits <span class="_ _3"></span>of <span class="_ _3"></span>Using <span class="_ _7"></span>Rx <span class="_ _8"></span> 5</div><div class="t m0 x7 h6 y14 ff5 fs3 fc5 sc0 ls0 ws0">Usage Scenarios Wher<span class="_ _2"></span>e Rx is Highl<span class="_ _2"></span>y Rele<span class="_ _2"></span>vant <span class="_ _9"> </span> <span class="_ _a"> </span> <span class="_ _a"> </span> <span class="_ _a"> </span> <span class="_ _a"> </span> <span class="_ _a"> </span> <span class="_ _a"> </span>6</div><div class="t m0 x7 h6 y15 ff5 fs3 fc5 sc0 ls0 ws0">Visualizing and Designing the Asynchr<span class="_ _2"></span>onous Paradigm with Rx <span class="_ _b"> </span> <span class="_ _a"> </span> <span class="_ _a"> </span> <span class="_ _a"> </span> <span class="_ _a"> </span>6</div><div class="t m0 x7 h6 y16 ff5 fs3 fc5 sc0 ls0 ws1">A <span class="_ _7"></span>Look <span class="_ _3"></span>at <span class="_ _3"></span>Rx <span class="_ _7"></span>API <span class="_ _3"></span>Design <span class="_ _c"></span> 8</div><div class="t m0 x7 h6 y17 ff5 fs3 fc5 sc0 ls0 ws1">Real-Life <span class="_ _7"></span>Pr<span class="_ _2"></span>oblem <span class="_ _d"></span> 13</div><div class="t m0 x7 h6 y18 ff5 fs3 fc5 sc0 ls0 ws1">Limitations <span class="_ _7"></span>of <span class="_ _3"></span>Rx <span class="_ _c"></span> 14</div><div class="t m0 x7 h6 y19 ff5 fs3 fc5 sc0 ls0 ws1">Conclusion <span class="_ _e"></span> 14</div><div class="t m0 x7 h6 y1a ff5 fs3 fc5 sc0 ls0 ws1">Appendix <span class="_ _7"></span>A: <span class="_ _3"></span>Getting <span class="_ _3"></span>Started <span class="_ _7"></span>with <span class="_ _3"></span>Rx <span class="_ _f"></span> 15</div><div class="t m0 x7 h6 y1b ff5 fs3 fc5 sc0 ls0 ws1">Appendix <span class="_ _7"></span>B: <span class="_ _3"></span>Understanding <span class="_ _7"></span>Asynchr<span class="_ _2"></span>onous <span class="_ _3"></span>Pr<span class="_ _2"></span>ogramming <span class="_ _10"></span> 22</div><div class="t m0 x7 h6 y1c ff5 fs3 fc5 sc0 ls0 ws1">Appendix <span class="_ _7"></span>C: <span class="_ _3"></span>Rx <span class="_ _3"></span>Extensibility <span class="_ _11"></span> 23</div><div class="t m0 x7 h6 y1d ff5 fs3 fc5 sc0 ls0 ws1">Downl<span class="_ _2"></span>oads <span class="_ _12"></span> 24</div><div class="t m0 x7 h6 y1e ff5 fs3 fc5 sc0 ls0 ws1">Refer<span class="_ _0"></span>ences <span class="_ _13"></span> 24</div><div class="c x8 y1f w3 h9"><div class="t m0 x9 ha y20 ff6 fs6 fc1 sc0 ls0 ws0"><span class="fc3 sc0">ICONIC ILL</span><span class="fc3 sc0">USTRA</span><span class="_ _2"></span><span class="fc3 sc0">TION</span></div><div class="t m0 xa hb y21 ff6 fs7 fc1 sc0 ls0 ws0"><span class="fc3 sc0">TECHNOL</span><span class="fc3 sc0">OG</span><span class="fc3 sc0">Y 1</span></div><div class="t m0 xa hb y22 ff6 fs7 fc1 sc0 ls0 ws0"><span class="fc3 sc0">TECHNOL</span><span class="fc3 sc0">OG</span><span class="fc3 sc0">Y 3 </span></div><div class="t m0 xa hb y23 ff6 fs7 fc1 sc0 ls0 ws0"><span class="fc3 sc0">TECHNOL</span><span class="fc3 sc0">OG</span><span class="fc3 sc0">Y 2</span></div></div></div><div class="pi" data-data='{"ctm":[1.568627,0.000000,0.000000,1.568627,0.000000,0.000000]}'></div></div>
<div id="pf4" class="pf w0 h0" data-page-no="4"><div class="pc pc4 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="https://static.pudn.com/prod/directory_preview_static/6258ff5bbe9ad24cfab22210/bg4.jpg"><div class="t m0 x6 h2 y9 ff1 fs0 fc0 sc0 ls0 ws0">4</div><div class="t m0 xb hc y24 ff5 fs8 fc1 sc0 ls0 ws0">As businesses f<span class="_ _2"></span>ace the incr<span class="_ _2"></span>easing need to r<span class="_ _2"></span>espond to and trigger actions based on data events, t<span class="_ _2"></span>echnologies have ev<span class="_ _2"></span>olv<span class="_ _2"></span>ed </div><div class="t m0 xb hc y25 ff5 fs8 fc1 sc0 ls0 ws0">to ex<span class="_ _2"></span>ecute these events in in an asynchr<span class="_ _2"></span>onous f<span class="_ _2"></span>ashion. Multiple technol<span class="_ _2"></span>ogies have been availabl<span class="_ _2"></span>e to ex<span class="_ _2"></span>ecute asynchronous </div><div class="t m0 xb hc y26 ff5 fs8 fc1 sc0 ls0 ws0">tasks or pr<span class="_ _2"></span>ograms; Component Object Model (COM) is one of the earliest e<span class="_ _2"></span>xamples. Mor<span class="_ _2"></span>e r<span class="_ _2"></span>ecently, Reactiv<span class="_ _2"></span>e Extensions </div><div class="t m0 xb hc y27 ff5 fs8 fc1 sc0 ls0 ws0">(commonl<span class="_ _2"></span>y known as “Rx”), an offering fr<span class="_ _2"></span>om Micr<span class="_ _2"></span>osoft DevLabs, can be l<span class="_ _2"></span>everaged to e<span class="_ _2"></span>xecute asynchr<span class="_ _2"></span>onous tasks or </div><div class="t m0 xb hc y28 ff5 fs8 fc1 sc0 ls0 ws0">pr<span class="_ _2"></span>ograms. The Rx library acc<span class="_ _2"></span>elerat<span class="_ _2"></span>es time to market f<span class="_ _2"></span>or asynchronous and e<span class="_ _2"></span>vent-based progr<span class="_ _2"></span>ams that have r<span class="_ _2"></span>obust </div><div class="t m0 xb hc y29 ff5 fs8 fc1 sc0 ls0 ws0">ar<span class="_ _2"></span>chitectur<span class="_ _2"></span>es. Rx can be used acr<span class="_ _2"></span>oss the .NET platform, including WPF, Sil<span class="_ _2"></span>verlight and Windows Phone. It also e<span class="_ _2"></span>xposes a </div><div class="t m0 xb hc y2a ff5 fs8 fc1 sc0 ls0 ws0">port to JavaScript. </div><div class="t m0 xb hc y2b ff5 fs8 fc1 sc0 ls0 ws0">The purpose of this white paper is to e<span class="_ _2"></span>valuate the Rx library as a tool f<span class="_ _2"></span>or devel<span class="_ _2"></span>oping applications for financial mark<span class="_ _2"></span>ets. </div><div class="t m0 xb hc y2c ff5 fs8 fc1 sc0 ls0 ws0">With the help of some use cases, this white paper addr<span class="_ _2"></span>esses: </div><div class="t m0 xb hc y2d ff7 fs8 fc1 sc0 ls0 ws0"><span class="_ _14"> </span>•EvolutionoftheRxobjectmodeltoimpl<span class="_ _2"></span>ementevent-driv<span class="_ _2"></span>enapplications</div><div class="t m0 xb hc y2e ff7 fs8 fc1 sc0 ls0 ws0"><span class="_ _14"> </span>•Keyar<span class="_ _2"></span>chitecturalc<span class="_ _2"></span>onceptsofRxtoimpl<span class="_ _2"></span>ementRxapplications</div><div class="t m0 xb hc y2f ff7 fs8 fc1 sc0 ls0 ws0"><span class="_ _14"> </span>•Demonstratione<span class="_ _2"></span>xample:Fil<span class="_ _2"></span>emonitoringmechanismusingRx</div><div class="t m0 xb hc y30 ff7 fs8 fc1 sc0 ls0 ws0"><span class="_ _14"> </span>•Rele<span class="_ _2"></span>vantusagescenariosofRx</div><div class="t m0 xb h8 y31 ff1 fs5 fc4 sc0 ls0 ws0">EXECUTIVE SUMMARY</div><div class="t m0 xb hc y32 ff5 fs8 fc1 sc0 ls0 ws0">This white paper is intended f<span class="_ _2"></span>or .NET devel<span class="_ _2"></span>opers and archit<span class="_ _2"></span>ects who are alr<span class="_ _2"></span>eady familiar with the f<span class="_ _2"></span>ollowing c<span class="_ _2"></span>oncepts:</div><div class="t m0 xb hc y33 ff7 fs8 fc1 sc0 ls0 ws0"><span class="_ _14"> </span>•Observerdesignpattern</div><div class="t m0 xb hc y34 ff7 fs8 fc1 sc0 ls0 ws0"><span class="_ _14"> </span>•Multi-thr<span class="_ _2"></span>eadingin.NET</div><div class="t m0 xb hc y35 ff7 fs8 fc1 sc0 ls0 ws0"><span class="_ _14"> </span>•Iterat<span class="_ _2"></span>orpatternin.NET(IEnumerable/IEnumer<span class="_ _2"></span>ator),LambdaExpr<span class="_ _2"></span>essionsandLINQ</div><div class="t m0 xb hc y36 ff7 fs8 fc1 sc0 ls0 ws0"><span class="_ _14"> </span>•Event-drivenapplic<span class="_ _2"></span>ationdevelopment</div><div class="t m0 xb hc y37 ff7 fs8 fc1 sc0 ls0 ws0"><span class="_ _14"> </span>•Asynchr<span class="_ _2"></span>onousapplicationdevel<span class="_ _2"></span>opmentusing.NET</div><div class="t m0 xb h8 y38 ff1 fs5 fc4 sc0 ls0 ws0">INTENDED AUDIENCE</div><div class="c x0 ya w2 h5"><div class="t m0 x4 h6 yb ff8 fs3 fc1 sc0 ls0 ws0"><span class="fc3 sc0">ICONIC ILL</span><span class="_ _2"></span><span class="fc3 sc0">USTRA</span><span class="_ _0"></span><span class="fc3 sc0">TION</span></div><div class="t m0 x5 h7 yc ff8 fs4 fc1 sc0 ls0 ws0"><span class="fc3 sc0">TECHNOL</span><span class="_ _2"></span><span class="fc3 sc0">OG</span><span class="fc3 sc0">Y 1</span></div><div class="t m0 x5 h7 yd ff8 fs4 fc1 sc0 ls0 ws0"><span class="fc3 sc0">TECHNOL</span><span class="_ _2"></span><span class="fc3 sc0">OG</span><span class="fc3 sc0">Y 3 </span></div><div class="t m0 x5 h7 ye ff8 fs4 fc1 sc0 ls0 ws0"><span class="fc3 sc0">TECHNOL</span><span class="_ _2"></span><span class="fc3 sc0">OG</span><span class="fc3 sc0">Y 2</span></div></div></div><div class="pi" data-data='{"ctm":[1.568627,0.000000,0.000000,1.568627,0.000000,0.000000]}'></div></div>
<div id="pf5" class="pf w0 h0" data-page-no="5"><div class="pc pc5 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="https://static.pudn.com/prod/directory_preview_static/6258ff5bbe9ad24cfab22210/bg5.jpg"><div class="t m0 x6 h2 y1 ff1 fs0 fc0 sc0 ls0 ws0">5</div><div class="t m0 xc hc y24 ff7 fs8 fc1 sc0 ls0 ws0">LINQisoftenusedduringapplicationde<span class="_ _2"></span>velopment.ALINQ-basedsequenc<span class="_ _2"></span>eoperatoroffer<span class="_ _2"></span>sextensivefl<span class="_ _2"></span>exibilityto</div><div class="t m0 xc hc y25 ff7 fs8 fc1 sc0 ls0 ws0">filter,queryandidentifydatac<span class="_ _2"></span>onditions.However,itdoesnotoff<span class="_ _2"></span>erbuilt-incapabilitiesfore<span class="_ _2"></span>vent-basedmechanismsto</div><div class="t m0 xc hc y26 ff7 fs8 fc1 sc0 ls0 ws0">pushortriggerevents.Thisr<span class="_ _2"></span>equir<span class="_ _2"></span>ementforamechanismthatwouldr<span class="_ _2"></span>ecognizee<span class="_ _2"></span>ventsandrespondappr<span class="_ _2"></span>opriatel<span class="_ _2"></span>yin</div><div class="t m0 xc hc y27 ff5 fs8 fc1 sc0 ls0 ws0">pr<span class="_ _2"></span>ogramming is what led t<span class="_ _2"></span>o the implementation of Rx f<span class="_ _2"></span>or .NET<span class="_ _0"></span>. </div><div class="t m0 xc hc y29 ff7 fs8 fc1 sc0 ls0 ws0">AsupersetofLINQ,Rximpl<span class="_ _2"></span>ementsapush-basedmechanismrepr<span class="_ _2"></span>esentedbythenewint<span class="_ _2"></span>erfacesIObservabl<span class="_ _2"></span>e<span class="ff9"><<span class="ff5">T</span>><span class="ff5"> and </span></span></div><div class="t m0 xc hc y2a ff5 fs8 fc1 sc0 ls0 ws0">IObserver<span class="ff9"><</span>T<span class="ff9">></span> f<span class="_ _2"></span>or asynchronous and e<span class="_ _2"></span>vent-based computations. These interf<span class="_ _2"></span>aces ar<span class="_ _2"></span>e mathematicall<span class="_ _2"></span>y dual of the pull-</div><div class="t m0 xc hc y39 ff5 fs8 fc1 sc0 ls0 ws0">based IEnumerabl<span class="_ _2"></span>e<span class="ff9"><</span>T<span class="ff9">></span> and IEnumerator<span class="ff9"><</span>T<span class="ff9">><span class="ff7">.SimilartoLINQ,Rxpr<span class="_ _2"></span>ovidesanapplicationpr<span class="_ _2"></span>ogrammingint<span class="_ _2"></span>erface(API)</span></span></div><div class="t m0 xc hc y2b ff7 fs8 fc1 sc0 ls0 ws0">forhandlinge<span class="_ _2"></span>ventsbyallowingoper<span class="_ _2"></span>atorstoaggr<span class="_ _2"></span>egate,filterandqueryev<span class="_ _2"></span>entflowsinaconciseandf<span class="_ _2"></span>amiliarway<span class="_ _2"></span>.</div><div class="t m0 xc hc y2d ff7 fs8 fc1 sc0 ls0 ws0">Overenumerabl<span class="_ _2"></span>esequences,LINQall<span class="_ _2"></span>owsdevel<span class="_ _2"></span>operstoconsumeandtransf<span class="_ _2"></span>ormvaluesfr<span class="_ _2"></span>omawiderangeofpull-</div><div class="t m0 xc hc y2e ff7 fs8 fc1 sc0 ls0 ws0">basedsequences,suchasin-memoryc<span class="_ _2"></span>ollections,databasetabl<span class="_ _2"></span>esandXMLdocuments.Inthesameway,devel<span class="_ _2"></span>opers</div><div class="t m0 xc hc y2f ff7 fs8 fc1 sc0 ls0 ws0">canframec<span class="_ _2"></span>omple<span class="_ _2"></span>xeventpr<span class="_ _2"></span>ocessingquerieso<span class="_ _2"></span>verpush-basedsequences,suchas.NETev<span class="_ _2"></span>ents,T<span class="_ _2"></span>ask<span class="ff9"><<span class="ff5">T</span>><span class="ff5">-based </span></span></div><div class="t m0 xc hc y30 ff5 fs8 fc1 sc0 ls0 ws0">computations, Windo<span class="_ _2"></span>ws Phone 7 sensors, the Windows 7 Sensor and Location APIs, F# firs<span class="_ _2"></span>t-class events, APM-</div><div class="t m0 xc hc y3a ff7 fs8 fc1 sc0 ls0 ws0">based(“IAsyncResult”)computations,SQLStr<span class="_ _2"></span>eamInsighttempor<span class="_ _2"></span>aleventstr<span class="_ _2"></span>eamsandasynchr<span class="_ _2"></span>onousworkflowsby</div><div class="t m0 xc hc y3b ff7 fs8 fc1 sc0 ls0 ws0">implementingRxo<span class="_ _2"></span>verobservabl<span class="_ _2"></span>esequences.</div><div class="t m0 xc hc y3c ff5 fs8 fc1 sc0 ls0 ws0">Apart fr<span class="_ _2"></span>om the push-based progr<span class="_ _2"></span>amming using Rx for .NET, ther<span class="_ _2"></span>e is push-based progr<span class="_ _2"></span>amming in browser-based </div><div class="t m0 xc hc y3d ff5 fs8 fc1 sc0 ls0 ws0">events, as well. Rx f<span class="_ _2"></span>or Javascript (RxJS) is a new f<span class="_ _2"></span>eature intr<span class="_ _2"></span>oduced in the Rx libr<span class="_ _2"></span>ary<span class="_ _2"></span>. RxJS pr<span class="_ _2"></span>ovides observabl<span class="_ _2"></span>e </div><div class="t m0 xc hc y3e ff7 fs8 fc1 sc0 ls0 ws0">coll<span class="_ _2"></span>ectionstousewithDOM,XmlHttpRequestandjQueryev<span class="_ _2"></span>ents.Inaddition,itpro<span class="_ _2"></span>videseasy-to-useconversionsfr<span class="_ _2"></span>om</div><div class="t m0 xc hc y3f ff7 fs8 fc1 sc0 ls0 ws0">exis<span class="_ _2"></span>tingDOM,XmlHttpRequestandjQueryeventstoobserv<span class="_ _2"></span>ablecoll<span class="_ _2"></span>ections,ther<span class="_ _2"></span>ebyallowinguserstoseaml<span class="_ _2"></span>essl<span class="_ _2"></span>yplug</div><div class="t m0 xc hc y40 ff5 fs8 fc1 sc0 ls0 ws0">RxJS into exis<span class="_ _2"></span>ting JavaScript-based web sites.</div><div class="t m0 xd h8 y31 ff1 fs5 fc4 sc0 ls0 ws0">WHA<span class="_ _15"></span>T DO REAC<span class="_ _0"></span>TIVE EXTENSIONS OFFER? </div><div class="t m0 xc hc y41 ff7 fs8 fc1 sc0 ls0 ws0">•<span class="_ _16"></span><span class="ff1">Simpler, mor<span class="_ _2"></span>e expr<span class="_ _2"></span>essive asynchr<span class="_ _2"></span>onous implementations. <span class="ff5">The Rx APIs all<span class="_ _2"></span>ow a uniform appr<span class="_ _2"></span>oach to structur<span class="_ _2"></span>e </span></span></div><div class="t m0 xe hc y42 ff7 fs8 fc1 sc0 ls0 ws0">asynchr<span class="_ _2"></span>onousflowsusingtheobserverpatt<span class="_ _2"></span>ern.Developer<span class="_ _2"></span>scandosobyexposingaLINQ-lik<span class="_ _2"></span>elibraryar<span class="_ _2"></span>oundthe</div><div class="t m0 xe hc y43 ff5 fs8 fc1 sc0 ls0 ws0">interf<span class="_ _2"></span>ace pair IObservabl<span class="_ _2"></span>e<span class="ff9"><</span>T<span class="ff9">></span> and IObserver<span class="ff9"><</span>T<span class="ff9">></span>. By pr<span class="_ _2"></span>oviding cleaner and mor<span class="_ _2"></span>e expr<span class="_ _2"></span>essiv<span class="_ _2"></span>e asynchronous c<span class="_ _2"></span>ode, this </div><div class="t m0 xe hc y44 ff5 fs8 fc1 sc0 ls0 ws0">library wraps up e<span class="_ _2"></span>xisting .NET infrastructur<span class="_ _2"></span>es used in asynchr<span class="_ _2"></span>onous progr<span class="_ _2"></span>amming—including events, thr<span class="_ _2"></span>ead-pool and </div><div class="t m0 xe hc y45 ff5 fs8 fc1 sc0 ls0 ws0">T<span class="_ _0"></span>ask Parall<span class="_ _2"></span>el Library (TPL). </div><div class="t m0 xc hc y46 ff7 fs8 fc1 sc0 ls0 ws0">•<span class="_ _16"></span><span class="ff1">Reduced l<span class="_ _2"></span>earning curve.<span class="ff7">.NETdev<span class="_ _2"></span>eloperswhoar<span class="_ _2"></span>efamiliarwithLINQcaneasil<span class="_ _2"></span>yapplytheirkno<span class="_ _2"></span>wledgealongwith</span></span></div><div class="t m0 xe hc y47 ff5 fs8 fc1 sc0 ls0 ws0">the observer pattern t<span class="_ _2"></span>o understand how to c<span class="_ _2"></span>ompose observables using Rx libr<span class="_ _2"></span>aries. (Composing observables in Rx </div><div class="t m0 xe hc y48 ff7 fs8 fc1 sc0 ls0 ws0">librariesissimilartoc<span class="_ _2"></span>omposingcoll<span class="_ _2"></span>ectionsusingLINQlibrary<span class="_ _2"></span>.)</div><div class="t m0 xc hc y49 ff7 fs8 fc1 sc0 ls0 ws0">•<span class="_ _16"></span><span class="ff1">Easier method for designing asynchr<span class="_ _2"></span>onous flo<span class="_ _2"></span>ws. <span class="ff5">While designing asynchr<span class="_ _2"></span>onous applications, such featur<span class="_ _2"></span>es as </span></span></div><div class="t m0 xe hc y4a ff5 fs8 fc1 sc0 ls0 ws0">events, thr<span class="_ _2"></span>eads and tasks c<span class="_ _2"></span>an be implemented asynchr<span class="_ _2"></span>onously<span class="_ _0"></span>. Howev<span class="_ _2"></span>er, the lev<span class="_ _2"></span>el of car<span class="_ _2"></span>e and attention that should </div><div class="t m0 xe hc y4b ff5 fs8 fc1 sc0 ls0 ws0">be tak<span class="_ _2"></span>en when implementing these featur<span class="_ _2"></span>es is very high. Rx simplifies this thought pr<span class="_ _2"></span>oces<span class="_ _2"></span>s by using observables and </div><div class="t m0 xe hc y4c ff5 fs8 fc1 sc0 ls0 ws0">observers as the c<span class="_ _2"></span>ommon nomenclatures and int<span class="_ _2"></span>ernally impl<span class="_ _2"></span>ementing thread-saf<span class="_ _2"></span>e data sharing.</div><div class="t m0 xd h8 y4d ff1 fs5 fc4 sc0 ls0 ws0">BENEFITS OF USING RX </div><div class="c x8 y1f w3 h9"><div class="t m0 x9 ha y20 ffa fs6 fc1 sc0 ls0 ws0"><span class="fc3 sc0">ICONIC ILL</span><span class="fc3 sc0">USTRA</span><span class="_ _2"></span><span class="fc3 sc0">TION</span></div><div class="t m0 xa hb y21 ffa fs7 fc1 sc0 ls0 ws0"><span class="fc3 sc0">TECHNOL</span><span class="fc3 sc0">OG</span><span class="fc3 sc0">Y 1</span></div><div class="t m0 xa hb y22 ffa fs7 fc1 sc0 ls0 ws0"><span class="fc3 sc0">TECHNOL</span><span class="fc3 sc0">OG</span><span class="fc3 sc0">Y 3 </span></div><div class="t m0 xa hb y23 ffa fs7 fc1 sc0 ls0 ws0"><span class="fc3 sc0">TECHNOL</span><span class="fc3 sc0">OG</span><span class="fc3 sc0">Y 2</span></div></div></div><div class="pi" data-data='{"ctm":[1.568627,0.000000,0.000000,1.568627,0.000000,0.000000]}'></div></div>