Buon esempio di Reattiva Estensioni Usa [chiusa]
-
23-09-2019 - |
Domanda
Capisco le basi di Rx. Dove sto lottando è come si sarebbe effettivamente utilizzare questo al di là di esempi accademici? Quali sono alcuni comuni, semplici scenari del mondo reale in cui RX è una soluzione molto migliore di quello che abbiamo oggi in .NET?
Soluzione
Per un gruppo di buoni esempi, vedi i 101 Rx campioni wiki
Altri suggerimenti
Rx consente di scrivere il codice che orchestra eventi concomitanti insieme. Se avete mai usato il TPL (vale a dire Task), poi ha dovuto fare salti mortali per cercare di contorte ContinueWith o WaitAll sulle cose giuste, Rx è per voi.
Per esempio, il flusso di lavoro di "Per ogni elemento in questo array, chiamare un servizio web, e quando tutte queste richieste di tornare, fare qualcosa di diverso. Se uno di loro non riescono, fallire il tutto".
La divulgazione, spudorato avanti: Il libro che Jesse Liberty e ho scritto su Rx è stato progettato per risolvere proprio questa domanda: "Come si usa Rx nel mio lavoro giorno per giorno?"; "Cosa posso do con questo?"
Prima di tutto, IObservable è un evento . Quindi, in qualsiasi luogo si utilizzano gli eventi internamente, è possibile utilizzare IObservable -. E se in seguito necessario applicare LINQ a questo evento, sei in grado di farlo senza refactoring
In secondo luogo, RX è adatto per tutte le situazioni in cui è necessario eseguire il codice asynchronousely . Ad esempio, la chiamata di un servizio Web, o il caricamento di un'immagine di grandi dimensioni.
Ma quando si inizia davvero a brillare - se il programma raggiunge una certa "massa critica" di utilizzo IObservable e si avvia conciliano differenti osservabili si sarebbe stupito di come semplice un po ' compiti diventano.
- measurments dispositivo
- Dati ritornassi in oltre un autobus messaggio
In entrambi i casi la società, il modo standard per ricevere i dati avviene tramite eventi, ma se voglio sintassi di query, o la composizione, poi RX dà a me in cui gli eventi non.
Rx è molto generale quindi ha utilità illimitata, proprio come IEnumerable / IEnumerator ha utility illimitata. IE tira valori, IO spinge valori.
Foreach è un esempio concreto di cui IEnumerables tornare utile, ma che non spiega IEnumerable, o la resa o niente. Lo stesso vale con Rx.
Essere in grado di guardare qualcosa sia da un punto di tiro di vista, o di un punto di spinta di vista, e di essere in grado di controllare la direzione o mezzi, è molto potente, perché ora si può spingere e tirare calcoli intorno a volontà, utilizzando operatori di query LINQ per "libero", contro un IO, perché è il duplice matematica di IE.
Ho appena avuto il mio primo sguardo a Rx, ma un progetto divertente lo userò per è la creazione di un widget Silverlight che visualizza l'attività nella nostra applicazione web ASP.NET MVC (che sono stati chiamati i metodi d'azione, da quale utente , eccetera). Sembra che Rx può aiutare con un sacco di cose in questo progetto, come la gestione della concorrenza e limitazione.