Sorry, this page is no longer available
Sorry, this page is no longer available
Sorry, this page is no longer available
Sorry, this page is no longer available
Sorry, this page is no longer available
Sorry, this page is no longer available
We may earn an affiliate commission when you visit our partners.
Course image
Dmitri Nesteruk

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

Read more

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

  • The reactive paradigm and push collections
  • Key Rx operators
  • Rx's Subject classes that help working with observable sequences
  • Fundamental Stream Operators
  • Advanced Stream Operators, including operations on multiple streams

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:

  • Good knowledge of C# and .NET framework
  • Good understanding of .NET application development (esp. collections/data storage)
  • Good knowledge of LINQ
  • Cursory knowledge of TPL may be benefitial

Course Materials

  • 100% hands-on, with live demonstrations of every topic covered
  • Presented in Visual Studio 2017
  • Every lesson comes with a single-file demo
  • End-of-section quizzes are available

Learning Outcomes

By the end of the course, students should:

  • Understand the use of reactive sequences
  • Appreciate key observable/observer .NET interfaces and how to use them
  • Efficiently use Subject classes for setting up simple scenarios
  • Apply single-stream operators, including operators involving time
  • Apply advanced operators, including multi-stream operators
Enroll now

What's inside

Learning objectives

  • Create and consume observable sequences
  • Generate sequences using observable factory methods
  • Quickly work with sequences using subject classes
  • Combine multiple sequences into a single stream
  • Master time-related sequence processing

Syllabus

An overview of the structure and organization of this course.

Learn the (very simple) interfaces that are the foundation of Rx

An overview of the lectures in this section.

Read more

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

Traffic lights

Read about what's good
what should give you pause
and possible dealbreakers
Provides hands-on experience with Reactive Extensions in Visual Studio 2017, which allows learners to immediately apply concepts and techniques to real-world .NET projects
Requires a good understanding of C#, .NET application development, and LINQ, which ensures learners have the necessary foundation to grasp the more advanced concepts of Reactive Extensions
Explores the Observer pattern and its implementation in C# with the event keyword, which helps learners understand the underlying principles of reactive programming
Covers the use of Subject classes for setting up simple scenarios, which enables learners to create and manage observable sequences effectively
Uses Visual Studio 2017, which may be an older version of the IDE, so learners may need to adapt the code to newer versions of Visual Studio
Teaches how to convert existing .NET paradigms (delegates, events, Task, IEnumerables) into observable sequences, which allows learners to integrate Reactive Extensions into existing projects

Save this course

Create your own learning path. Save this course to your list so you can find it easily later.
Save

Reviews summary

Mastering rx for .net developers

According to learners, this course serves as a solid introduction to Reactive Extensions specifically tailored for experienced C# and .NET developers. Many students found the instructor's explanations clear and concise, particularly appreciating the hands-on code demos which helped solidify understanding of core Rx concepts and operators like Subjects and fundamental stream operations. Reviewers frequently mentioned that while the course provides a strong foundation in the reactive paradigm, it tends to focus on fundamentals and may lack the depth or complexity needed for advanced real-world applications. Learners emphasize that having a strong prerequisite understanding of LINQ is crucial for success. Some also noted that using Visual Studio 2017 feels somewhat dated.
Need strong C# and LINQ background.
"if your LINQ isn't strong, you'll struggle."
"Requires significant outside study [if prerequisites aren't met]."
"The prerequisites are serious."
Instructor explains concepts well.
"The instructor explains complex concepts clearly, and the code demos are easy to follow."
"Dmitri explains everything concisely and the demos reinforce the learning effectively."
"Instructor explanation is clear."
Practical code examples are helpful.
"The hands-on coding and projects are the strongest part of the course for me."
"The code demos are easy to follow. Really helped me understand how to apply the reactive paradigm."
"the demos reinforce the learning effectively."
Presented using Visual Studio 2017.
"Using VS 2017 is a bit old now, but the core concepts are still relevant."
"Feels a bit dated with the tools used."
Great basics, lacks advanced cases.
"Expected more practical examples. The demos are too simple and don't show how Rx scales."
"The material feels like a basic overview, not a 'mastering' course."
"wish there were more advanced topics or practical use cases beyond the demos."

Activities

Be better prepared before your course. Deepen your understanding during and after it. Supplement your coursework and achieve mastery of the topics covered in Mastering Reactive Extensions with C# and .NET with these activities:
Review LINQ Fundamentals
Solidify your understanding of LINQ, as it's a prerequisite for effectively using Reactive Extensions.
Browse courses on LINQ
Show steps
  • Review LINQ syntax and query operators.
  • Practice writing LINQ queries against collections.
  • Understand deferred execution in LINQ.
Review 'C# in Depth'
Strengthen your C# foundation to better understand the underlying language features used by Reactive Extensions.
Show steps
  • Read chapters on delegates, events, and async/await.
  • Study the examples and code snippets.
  • Practice using these features in your own projects.
Review 'Rx.NET in Action'
Gain a deeper understanding of Rx.NET concepts and practical applications by studying a dedicated book on the subject.
Show steps
  • Read the book's introductory chapters.
  • Study the examples and code snippets.
  • Experiment with the concepts in your own projects.
Four other activities
Expand to see all activities and additional details
Show all seven activities
Implement Custom Observable Operators
Reinforce your understanding of Rx operators by implementing your own versions of common operators.
Show steps
  • Choose a few common Rx operators to implement.
  • Write the code for your custom operators.
  • Test your operators thoroughly.
Build a Real-Time Data Dashboard
Apply your Rx knowledge by building a dashboard that displays real-time data from a source like a stock ticker or sensor network.
Show steps
  • Choose a data source for your dashboard.
  • Create an Rx pipeline to process the data stream.
  • Design and implement the dashboard UI.
  • Test and refine your dashboard.
Write a Blog Post on Rx.NET
Solidify your understanding by explaining a specific Rx.NET concept or operator in a blog post.
Show steps
  • Choose a topic for your blog post.
  • Research the topic thoroughly.
  • Write and edit your blog post.
  • Publish your blog post online.
Contribute to an Rx.NET Open Source Project
Deepen your understanding of Rx.NET by contributing to an open-source project that uses it.
Show steps
  • Find an Rx.NET open-source project on GitHub.
  • Identify an issue or feature to work on.
  • Submit a pull request with your changes.

Career center

Learners who complete Mastering Reactive Extensions with C# and .NET will develop knowledge and skills that may be useful to these careers:
Real-Time Systems Engineer
A Real-Time Systems Engineer designs and develops systems that must respond to events within strict time constraints. This course on Reactive Extensions (Rx) with C# and .NET is particularly relevant for Real-Time Systems Engineers who need to process data streams and manage asynchronous events. Real-Time Systems Engineers can apply single-stream operators, including operators involving time. This role requires advanced technical skills and a deep understanding of system architecture. This course provides a deep-dive into the Observer pattern.
IoT Developer
An Internet of Things Developer builds software for connected devices and systems. They work with sensors, actuators, and communication protocols to create smart and connected solutions. The IoT Developer can use Rx to generate sequences using Observable factory methods. This course on Reactive Extensions (Rx) with C# and .NET is well-suited for IoT Developers who need to process data streams from IoT devices. This role must master time-related sequence processing. This course addresses the fundamental ideas of working with sequences.
Software Engineer
A Software Engineer designs, develops, and tests software applications. They write code, debug issues, and collaborate with other engineers to deliver high-quality software. This course on Reactive Extensions with C# and .NET may be useful for Software Engineers who need to handle asynchronous data streams and build responsive applications. Software Engineers can leverage Rx to process events, manage user interfaces, and integrate with external systems. By appreciating key observable and observer .NET interfaces, the Software Engineer can improve their ability to deliver high quality work. This course addresses ways of combining several reactive sequences.
Mobile Application Developer
A Mobile Application Developer specializes in creating applications for mobile devices such as smartphones and tablets. This course on Reactive Extensions (Rx) with C# and .NET is well-suited for Mobile Application Developers who need to handle asynchronous data streams and build responsive user interfaces. Mobile Application Developers can use Rx to manage user input events, handle network requests, and update UI elements. The aspiring Mobile Application Developer will be able to appreciate key observable/observer .NET interfaces. Since a Subject is both an observer and observable, it can act as a sort of proxy.
Application Developer
An Application Developer specializes in creating software applications for computers or mobile devices. The job often involves writing code, testing, and debugging applications. This course on Reactive Extensions (Rx) with C# and .NET is relevant for Application Developers who build applications that handle real-time data or require asynchronous processing. Application Developers can use Rx to manage user interface events, handle data streams, and build responsive applications. An understanding of the use of reactive sequences will help the aspiring Application Developer. The course covers the use of Subject classes for setting up simple scenarios. This course may be useful because it discusses unsubscribing from an observable.
Backend Developer
A Backend Developer focuses on the server-side logic, databases, and APIs that power applications. Responsibilities often include writing code, troubleshooting, and ensuring system scalability. This course on Reactive Extensions (Rx) with C# and .NET may be helpful in becoming a Backend Developer, especially when building real-time or event-driven systems. Backend Developers can use Rx to manage asynchronous data streams and build responsive APIs. In particular, Backend Developers can apply single-stream operators, including operators involving time. Mastering time-related sequence processing helps the Backend Developer stand out. This course may be useful because it addresses the interface formalization and the expectations that consumers of a sequence of values might have.
Data Engineer
A Data Engineer designs, builds, and maintains data pipelines and infrastructure. They transform data into a format suitable for analysis, enabling data scientists and analysts to derive insights. This course on Reactive Extensions (Rx) with C# and .NET helps Data Engineers handle real-time data streams effectively. Data Engineers can use Rx to ingest, filter, analyze, and re-broadcast data streams. The course's coverage of key Rx operators and Subject classes is particularly beneficial. By mastering reactive sequences, and combining multiple sequences into a single stream, the aspiring Data Engineer will be able to produce higher quality work. This course may be useful because it addresses the efficient use of Subject classes, and advanced operators involving multiple streams.
DevOps Engineer
A DevOps Engineer focuses on automating and streamlining the software development lifecycle, including building, testing, and deployment. This course on Reactive Extensions with C# and .NET may be useful for DevOps Engineers who need to manage event-driven systems or monitor real-time data streams. DevOps Engineers can use Rx to build monitoring tools, automate deployments, and manage infrastructure. This is because the end result of this course aims for the student to be able to efficiently use Subject classes for setting up simple scenarios. Mastering time-related sequence processing helps the DevOps Engineer stand out. This course may be useful because it discusses converting existing .NET paradigms into observable sequences.
System Integrator
A System Integrator is responsible for combining different subsystems or components into a cohesive system. This role involves understanding various technologies and ensuring they work together seamlessly. This course on Reactive Extensions (Rx) with C# and .NET may be helpful to System Integrators who need to integrate systems that exchange data in real-time. The role must be able to efficiently use Subject classes for setting up simple scenarios. System Integrators can use Rx to handle asynchronous data streams. This course may be useful because it helps learn the interfaces that are the foundation of Rx.
Data Scientist
A Data Scientist analyzes data to extract meaningful insights and solve complex problems. They use statistical methods, machine learning algorithms, and data visualization techniques to uncover patterns and trends. This course on Reactive Extensions (Rx) with C# and .NET may be useful to Data Scientists who work with streaming data or real-time analytics. Data Scientists can utilize Rx to process and analyze data streams, build predictive models, and develop data-driven applications. Specifically, Data Scientists can efficiently use Subject classes for setting up simple scenarios. The course content dedicated to combining multiple sequences into a single stream can help the Data Scientist. An advanced degree is often required for this role.
Software Architect
A Software Architect is responsible for making high-level design choices and setting technical standards, including software coding standards, tools, and platforms. This role often requires a background in software development. This course on Reactive Extensions (Rx) with C# and .NET is valuable for Software Architects who need to design systems that handle streams of data in a reactive manner. Software Architects can leverage Rx to build scalable and maintainable systems that react to changes in real-time. The architect benefits from understanding the use of reactive sequences. Since a subject is both an observer and observable, it can act as a sort of proxy. This course may be useful because it covers fundamental and advanced stream operators.
Cloud Architect
A Cloud Architect designs and oversees the implementation of cloud computing solutions. This includes selecting appropriate cloud services, designing network architectures, and ensuring security and scalability. This course on Reactive Extensions (Rx) with C# and .NET may be helpful for Cloud Architects who need to build event-driven systems or process data streams in the cloud. Cloud Architects can use Rx to build scalable microservices, manage asynchronous workflows, and integrate with cloud-based data sources. The course explains the use of Subject classes for setting up simple scenarios. To stand out in this role, it may be useful to understand how to apply advanced operators including multi-stream operators.
Quantitative Analyst
A Quantitative Analyst, often working in finance, uses mathematical and statistical methods to analyze data, develop models, and make predictions. A strong foundation in programming is typically required. This course on Reactive Extensions (Rx) with C# and .NET may be useful for Quantitative Analysts who work with real-time data feeds or complex event processing. Quantitative Analysts can use Rx to process and analyze financial data streams, build trading algorithms, and manage risk. This is because the end result of this course aims for the student to be able to efficiently use Subject classes for setting up simple scenarios. The material on combining multiple sequences into a single stream helps the Quantitative Analyst stand out. An advanced degree is often required for this role.
Game Developer
A Game Developer creates video games for various platforms, including consoles, PCs, and mobile devices. This course on Reactive Extensions (Rx) with C# and .NET may be helpful to Game Developers who need to manage game events, handle user input, and create dynamic gameplay experiences. Game Developers can efficiently use Subject classes for setting up simple scenarios. Mastering reactive sequences will help Game Developers stand out in this role. This course addresses key Rx operators.
Financial Engineer
A Financial Engineer designs and implements financial models and strategies, often using advanced mathematical and computational techniques. This course on Reactive Extensions (Rx) with C# and .NET may be useful to those who wish to be Financial Engineers dealing with real-time market data and algorithmic trading systems. Financial Engineers can use Rx to process and analyze high-frequency data, build real-time risk management systems, and develop automated trading strategies. In particular, Financial Engineers can generate sequences using Observable factory methods. The course helps the Financial Engineer apply advanced operators, including multi-stream operators. An advanced degree is almost always required for this role.

Reading list

We've selected two books that we think will supplement your learning. Use these to develop background knowledge, enrich your coursework, and gain a deeper understanding of the topics covered in Mastering Reactive Extensions with C# and .NET.
Provides a comprehensive guide to Reactive Extensions for .NET. It covers the core concepts, operators, and patterns for building reactive applications. It serves as a valuable reference for understanding the practical applications of Rx.NET and complements the course material by providing real-world examples and in-depth explanations.
Provides a deep dive into the C# language, covering many of the features used in Reactive Extensions. While not directly about Rx.NET, it provides a strong foundation in C# that is essential for understanding and using Rx.NET effectively. It is more valuable as additional reading to strengthen C# skills than as a direct reference for Rx.NET.

Share

Help others find this course page by sharing it with your friends and followers:

Similar courses

Similar courses are unavailable at this time. Please try again later.
Our mission

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.

Affiliate disclosure

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.

© 2016 - 2025 OpenCourser