IObservable < T > in .NET Framework 4.0 Beta2
-
06-07-2019 - |
Domanda
IObservable < T >
e IObserver < T >
sono inserite direttamente nello spazio dei nomi System
in .NET Framework 4.0 Beta2. Perché non in System.Collections.Generic
, come IEnumerable < T >
?
P.S. L'anteprima di Reactive Framework da Silverlight Toolkit contiene IObserver < T >
nello spazio dei nomi System.Collections.Generic
.
Soluzione
Ciò che descrivono le nuove interfacce IObservable / IObserver è un'astrazione molto superiore rispetto alle sole raccolte che possono essere viste come un caso speciale di calcoli (ecco perché gli elenchi in Haskell sono monadi). Quindi è ovvio che tale generalizzazione è collocata nello spazio dei nomi di sistema.
Dai un'occhiata a questo brillante cast di Erik Meijer dove descrive le idee alla base delle interfacce.
Altri suggerimenti
IObservable è un'interfaccia che identifica una classe che implementa il modello Observer . Non è legato alle collezioni. È più legato al fornire un'alternativa agli eventi.
Anche se questa è una vecchia domanda su cui mi sono imbattuto, volevo solo appoggiare la valutazione di @ ControlFlow del "dualismo" tra IObservable e IEnumerable come una raccolta "Pushed based" vs "Pull based" con un link a "Rx di Erik Meijer in 15 minuti ", dove può essere citato dicendo esattamente questo. http://channel9.msdn.com/posts / Charles / Erik-Meijer-Rx-in-15-Minutes /
Di conseguenza, questa raccolta basata su spinte può fondamentalmente spostare il paradigma di base di "una serie banale di eventi chiamati" in una raccolta di prima classe asincrona selezionabile, selezionabile, interrogabile, passabile e abbonabile. Qualcosa che fa ciò che appartiene allo spazio dei nomi BCL principale o forse merita il suo, ma è troppo oltre la raccolta di Yet-Another per condividere il suo spazio dei nomi. Intendiamoci, questa è solo la mia opinione.