This course covers Reactive Extensions, a technology for working with streams of data in a reactive fashion. With Reactive Extensions, you can ingest, filter analyze and re-broadcast data streams. You can also build your own components which generate reactive streams for others to produce.
Reactive Extensions started its life as a .NET technology, but has since been ported to every other language imaginable, including even JavaScript. This course shows how Rx can be used specifically with C# and .NET.
Topics Covered
This course covers Reactive Extensions, a technology for working with streams of data in a reactive fashion. With Reactive Extensions, you can ingest, filter analyze and re-broadcast data streams. You can also build your own components which generate reactive streams for others to produce.
Reactive Extensions started its life as a .NET technology, but has since been ported to every other language imaginable, including even JavaScript. This course shows how Rx can be used specifically with C# and .NET.
Topics Covered
Pre-requisites
This is an intermediate-level course, designed for serious .NET programmers wishing to expand their arsenal of .NET related skills. To take the course, you will need the following:
Course Materials
Learning Outcomes
By the end of the course, students should:
An overview of the structure and organization of this course.
An overview of the lectures in this section.
The Observer pattern is incorporated into C# via the event keyword. But what about observable sequences?
The IObserver<T> interface formalizes the expectations that the consumer of a sequence of values might have. Specifically, it anticipates the following outcomes:
The sequence generates zero or more values in
OnNext()
Failures in the sequence are propagated through
OnError()
When the sequence is exhausted, we get an
OnComplete()
We are going to discuss IObservable<T>, but we are not going to implement it just yet.
Test your understanding of key Rx interfaces.
A summary of all the things we've learned in this section of the course.
A look at the things we'll learn in this section.
Ways of processing sequences with respect to time.
The Subject<T> is the simplest class one can use for feeding values to an IObserver<T>.
We know how to subscribe to an observable, but how to unsubscribe?
Since a Subject is both an observer and observable, it can act as a sort of proxy.
A subject that is able to store the values that came in and then replay them for any subscriber. Can be limited with either a time window or a buffer size.
Just like an ordinary subject, but has a default value that is immediately supplied to any listener.
A subject that only posts its last value, and only when its OnCompleted() is called.
We finally get to implement IObservable<T> and discuss some of the potential problems.
Some questions about different Subject classes and what they are used for?
Simpler ways of making ReplaySubject<T>-style objects.
A mechanism that is better and more flexible than all those Subjects.
Quick ways of generating simple observable sequences.
Ways of converting existing .NET paradigms (delegates, events, Task<T>, IEnumerables) into observable sequences.
Learn how to filter observable sequences.
Making categorical judgement about sequences (e.g., claiming that the two sequences are identical) is a bit more complicated than with LINQ.
Transforming a sequence into something else.
Aggregation can work in two different ways with reactive sequences: either collapsing a sequence to a single value, or having a running sum/average/whatever that doesn't require completion.
Some questions about the correct use of key sequence processing operators.
A look at the topics we'll discuss in this section.
Smart ways of handling exceptions generated in reactive sequences.
Ways of combining several reactive sequences.
A practical example of the use of Rx (and also Autofac) in building an Event Broker.
Test your comprehension with these questions.
A summary of the things we've learned in this section of the course.
A summary of the things we've learned in the course. See also some links to my other courses.
Congratulation on completing this course!
Now that you’ve mastered the curriculum, check out some of my other .NET/C# courses:
Enjoy!
Dmitri
OpenCourser helps millions of learners each year. People visit us to learn workspace skills, ace their exams, and nurture their curiosity.
Our extensive catalog contains over 50,000 courses and twice as many books. Browse by search, by topic, or even by career interests. We'll match you to the right resources quickly.
Find this site helpful? Tell a friend about us.
We're supported by our community of learners. When you purchase or subscribe to courses and programs or purchase books, we may earn a commission from our partners.
Your purchases help us maintain our catalog and keep our servers humming without ads.
Thank you for supporting OpenCourser.