Prognosis.Reactive
5.0.0
See the version list below for details.
dotnet add package Prognosis.Reactive --version 5.0.0
NuGet\Install-Package Prognosis.Reactive -Version 5.0.0
<PackageReference Include="Prognosis.Reactive" Version="5.0.0" />
<PackageVersion Include="Prognosis.Reactive" Version="5.0.0" />
<PackageReference Include="Prognosis.Reactive" />
paket add Prognosis.Reactive --version 5.0.0
#r "nuget: Prognosis.Reactive, 5.0.0"
#:package Prognosis.Reactive@5.0.0
#addin nuget:?package=Prognosis.Reactive&version=5.0.0
#tool nuget:?package=Prognosis.Reactive&version=5.0.0
Prognosis.Reactive
System.Reactive extensions for the Prognosis service health graph. Provides Rx-based alternatives to the polling-based HealthMonitor in the core package.
Installation
dotnet add package Prognosis.Reactive
API
All extensions operate on HealthGraph. Use HealthGraph.Create(root) to materialize the graph, then chain Rx operators.
PollHealthReport — timer-driven polling
Polls on a fixed interval, re-evaluates every node, and emits a HealthReport whenever the graph state changes:
using Prognosis.Reactive;
var graph = HealthGraph.Create(app);
graph.PollHealthReport(TimeSpan.FromSeconds(30))
.Subscribe(report =>
Console.WriteLine($"{report.Nodes.Count} nodes"));
ObserveHealthReport — push-triggered evaluation
Reacts to HealthGraph.StatusChanged events and produces a fresh report immediately — no polling delay. Changes in any transitive dependency bubble up automatically.
graph.ObserveHealthReport()
.Subscribe(report =>
Console.WriteLine($"{report.Nodes.Count} nodes"));
SelectHealthChanges — diff-based change stream
Projects consecutive HealthReport emissions into individual StatusChange events by diffing the reports. Composable with any report source:
graph.PollHealthReport(TimeSpan.FromSeconds(30))
.SelectHealthChanges()
.Subscribe(change =>
Console.WriteLine($"{change.Name}: {change.Previous} → {change.Current}"));
Each StatusChange includes the service name, previous status, current status, and optional reason — derived from HealthReport.DiffTo in the core library.
Sharing streams across subscribers
The Rx helpers produce cold IObservable<HealthReport> streams — each subscription runs an independent pipeline and triggers its own evaluations. To share a single evaluation across multiple subscribers:
var shared = graph.CreateSharedReportStream(TimeSpan.FromSeconds(30));
var shared = graph.CreateSharedObserveStream();
// With replay for late subscribers:
var shared = graph.CreateSharedReportStream(TimeSpan.FromSeconds(30),
ShareStrategy.ReplayLatest);
Or use standard Rx multicast operators directly: Publish().RefCount() or Replay(1).RefCount().
Dependencies
- Prognosis (core library)
- System.Reactive >= 6.0.1
Requirements
- .NET Standard 2.0+ (.NET Framework 4.6.1+, .NET Core 2.0+, .NET 5+)
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
| .NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.0 is compatible. netstandard2.1 is compatible. |
| .NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen40 was computed. tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.0
- Prognosis (>= 5.0.0)
- System.Reactive (>= 6.0.1)
-
.NETStandard 2.1
- Prognosis (>= 5.0.0)
- System.Reactive (>= 6.0.1)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 7.0.0-beta.1 | 35 | 3/3/2026 |
| 7.0.0-alpha | 49 | 3/2/2026 |
| 6.1.0 | 53 | 3/2/2026 |
| 6.0.0 | 55 | 3/1/2026 |
| 5.0.0 | 58 | 2/28/2026 |
| 4.1.0 | 65 | 2/27/2026 |
| 4.0.0 | 74 | 2/26/2026 |
| 4.0.0-alpha | 84 | 2/26/2026 |
| 3.0.1 | 88 | 2/19/2026 |
| 3.0.0 | 83 | 2/19/2026 |
| 3.0.0-beta | 83 | 2/18/2026 |
| 3.0.0-alpha | 80 | 2/18/2026 |
| 2.1.0 | 91 | 2/16/2026 |
| 2.0.0 | 91 | 2/15/2026 |
| 1.0.0 | 99 | 2/14/2026 |