Microsoft continua la piacevole tradizione di rendere open source gran parte delle librerie che costituiscono i building block ovvero le fondamenta delle applicazioni basate sulle tecnologie che compongono lo stack framework.
Questa volta tocca a Reactive Extensions, ospitato su CodePlex, una libreria che semplifica la costruzione di programmi che eseguono operazioni asincrone o event-driven, sempre più diffuse al giorno d'oggi, utilizzando una sintassi in stile LINQ.
In particolare, la libreria si prefigge di agevolare le dinamiche che tendono a essere più complesse nell'ambito della programmazione multithreading, quali la sincronizzazione, la gestione delle eccezioni, l'interazione con il thread avviato per il suo controllo generale e l'eventuale interruzione su richiesta. Tutto cià avviene grazie a un'implementazione estesa del pattern Observer che consente di monitorare i data stream, cioè le origini dei dati da trattare (da qualsiasi fonte a piacimento), e di ricevere notifiche sui loro cambiamenti.
Il rilascio della libreria dietro licenza open source consente di analizzare il codice sia per apprendere come sono state implementate le dinamiche, sia per apportare modifiche in caso di bug specifici, sia per suggerire migliorie e contribuire attivamente a questo interessante progetto, costituito da molte parti non solo .NET: ad esempio, esistono implementazioni della libreria anche in linguaggio C++ (Rx++) e JavaScript (RxJs).
Per avere un'idea delle potenzialità di Rx, è possibile leggere il blog post di Scott Hanselman a riguardo, o la guida introduttiva su MSDN (completa di documentazione, video ed esempi).
"Siate affamati, siate... asincroni!" ;)