OPCFoundation.NetStandard.Opc.Ua.Redundancy.Server
2.0.0-preview.5
Prefix Reserved
dotnet add package OPCFoundation.NetStandard.Opc.Ua.Redundancy.Server --version 2.0.0-preview.5
NuGet\Install-Package OPCFoundation.NetStandard.Opc.Ua.Redundancy.Server -Version 2.0.0-preview.5
<PackageReference Include="OPCFoundation.NetStandard.Opc.Ua.Redundancy.Server" Version="2.0.0-preview.5" />
<PackageVersion Include="OPCFoundation.NetStandard.Opc.Ua.Redundancy.Server" Version="2.0.0-preview.5" />
<PackageReference Include="OPCFoundation.NetStandard.Opc.Ua.Redundancy.Server" />
paket add OPCFoundation.NetStandard.Opc.Ua.Redundancy.Server --version 2.0.0-preview.5
#r "nuget: OPCFoundation.NetStandard.Opc.Ua.Redundancy.Server, 2.0.0-preview.5"
#:package OPCFoundation.NetStandard.Opc.Ua.Redundancy.Server@2.0.0-preview.5
#addin nuget:?package=OPCFoundation.NetStandard.Opc.Ua.Redundancy.Server&version=2.0.0-preview.5&prerelease
#tool nuget:?package=OPCFoundation.NetStandard.Opc.Ua.Redundancy.Server&version=2.0.0-preview.5&prerelease
OPC UA .NET Standard — Distributed / High-Availability Server
OPCFoundation.NetStandard.Opc.Ua.Redundancy.Server adds the optional distributed building blocks that let an OPCFoundation.NetStandard.Opc.Ua.Server server run as a redundant replica set (active/passive or active/active) while sharing its address space and — optionally — its session state across replicas.
Overview
The core server library stays a self-contained, single-instance server. This package layers the distributed concerns on top through dependency injection so the in-memory, single-instance path is unchanged when the package is not used:
- A shared, integrity-protected key/value backend (
ISharedKeyValueStore) that mirrors node additions, removals, references, and values across replicas. - Leader election (
ILeaderElection) for the shared-read / leader-write redundancy model, surfaced to clients through the standard OPC UAServiceLeveland redundancy nodes. - Opt-in mirrors for HotAndMirrored/Transparent failover: encrypted session state with single-use nonce validation, subscription definitions, retransmission queues for
Republish, best-effort continuation-point envelopes, and deterministic EventIds when anIEventIdProvidersuch asDeterministicEventIdProvideris configured.
Getting started
Wire the distributed address space and (optionally) shared sessions through the fluent DI surface:
services.AddOpcUa()
.AddServer(...)
.UseReplicaNodeIdentity("replica-set", ["urn:example:model", "urn:example:instances"])
.UseDistributedAddressSpace(distributed =>
{
distributed.KeyValueStoreFactory = _ => new InMemorySharedKeyValueStore();
})
.UseDistributedSessions();
The single-instance defaults remain in effect until a shared store is supplied, so the same server binary runs stand-alone or as part of a replica set.
Replica-set address spaces require UseReplicaNodeIdentity with the same ordered
namespace list and assignment mode on every replica. Shared slots start at index
2; ApplicationUri and built-in diagnostics remain local. The standard factory
derives identical wire NodeIds, and hydration preserves supplied root/child IDs.
Enable writerAssignedIds only for active/passive writer allocations; independent
active/active entities need stable keys or explicit IDs. Protected store contracts
and pre-merge gossip descriptors reject incompatible replicas. See
Replica-consistent NodeIds
for direct construction, hybrid provisioning and legacy-state restrictions.
Distributed address-space replication follows each node manager's declared non-standard NamespaceUris; namespace-zero infrastructure remains local to each replica. Node managers that use a custom ownership partition and return null for NamespaceUris must implement ILocalAddressSpaceOwnership with a stable PartitionId and an OwnsNode(NodeId) predicate.
Active/passive writers require linearizable shared sequence coordination. Compose
UseRedundancyConsistency(...) before UseDistributedAddressSpace(...), or use
an explicitly configured HybridSharedKeyValueStore for direct construction.
Bare CRDT writers and process-local coordinators paired with replicated payloads
fail before mutation.
Authoritative bootstrap and compacted snapshots require strongly consistent state reads. CRDT payloads use non-destructive hydration and retained deltas: missing rows do not imply deletion or an empty store. Corrupt records cannot justify cleanup, and unfinished publication reservations prevent snapshot/log compaction until reconciled. See the High Availability guide for these consistency and recovery requirements.
Target frameworks
net472, net48, netstandard2.1, net8.0, net9.0, net10.0.
Additional documentation
See the High Availability guide for the OPC UA redundancy mapping and the Kubernetes deployment guide for running the server as a replica set.
| 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 is compatible. 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 is compatible. 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 is compatible. 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 | netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.1 is compatible. |
| .NET Framework | net472 is compatible. net48 is compatible. net481 was computed. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETFramework 4.7.2
- BitFaster.Caching (>= 2.6.1)
- BouncyCastle.Cryptography (>= 2.7.0)
- Crdt (>= 1.1.2)
- Crdt.Transport (>= 1.1.2)
- Microsoft.Bcl.AsyncInterfaces (>= 10.0.11)
- Microsoft.Bcl.HashCode (>= 6.0.0)
- Microsoft.Bcl.TimeProvider (>= 10.0.11)
- Microsoft.Extensions.Configuration (>= 10.0.11)
- Microsoft.Extensions.Configuration.Abstractions (>= 10.0.11)
- Microsoft.Extensions.DependencyInjection (>= 10.0.11)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 10.0.11)
- Microsoft.Extensions.Diagnostics (>= 10.0.11)
- Microsoft.Extensions.Hosting.Abstractions (>= 10.0.11)
- Microsoft.Extensions.Http (>= 10.0.11)
- Microsoft.Extensions.Logging (>= 10.0.11)
- Microsoft.Extensions.Logging.Abstractions (>= 10.0.11)
- Microsoft.Extensions.Options (>= 10.0.11)
- Microsoft.Extensions.Options.ConfigurationExtensions (>= 10.0.11)
- OPCFoundation.NetStandard.Opc.Ua.Redundancy (>= 2.0.0-preview.5)
- OPCFoundation.NetStandard.Opc.Ua.Server (>= 2.0.0-preview.5)
- RaftCs (>= 1.1.2)
- RaftCs.Transport (>= 1.1.2)
- System.Buffers (>= 4.6.1)
- System.Collections.Immutable (>= 9.0.0)
- System.Diagnostics.DiagnosticSource (>= 10.0.11)
- System.Formats.Asn1 (>= 10.0.11)
- System.Memory (>= 4.6.3)
- System.Runtime.CompilerServices.Unsafe (>= 6.1.2)
- System.Text.Json (>= 10.0.11)
- System.Threading.Channels (>= 10.0.11)
- System.Threading.RateLimiting (>= 10.0.11)
- System.Threading.Tasks.Extensions (>= 4.6.3)
-
.NETFramework 4.8
- BitFaster.Caching (>= 2.6.1)
- BouncyCastle.Cryptography (>= 2.7.0)
- Crdt (>= 1.1.2)
- Crdt.Transport (>= 1.1.2)
- Microsoft.Bcl.AsyncInterfaces (>= 10.0.11)
- Microsoft.Bcl.HashCode (>= 6.0.0)
- Microsoft.Bcl.TimeProvider (>= 10.0.11)
- Microsoft.Extensions.Configuration (>= 10.0.11)
- Microsoft.Extensions.Configuration.Abstractions (>= 10.0.11)
- Microsoft.Extensions.DependencyInjection (>= 10.0.11)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 10.0.11)
- Microsoft.Extensions.Diagnostics (>= 10.0.11)
- Microsoft.Extensions.Hosting.Abstractions (>= 10.0.11)
- Microsoft.Extensions.Http (>= 10.0.11)
- Microsoft.Extensions.Logging (>= 10.0.11)
- Microsoft.Extensions.Logging.Abstractions (>= 10.0.11)
- Microsoft.Extensions.Options (>= 10.0.11)
- Microsoft.Extensions.Options.ConfigurationExtensions (>= 10.0.11)
- OPCFoundation.NetStandard.Opc.Ua.Redundancy (>= 2.0.0-preview.5)
- OPCFoundation.NetStandard.Opc.Ua.Server (>= 2.0.0-preview.5)
- RaftCs (>= 1.1.2)
- RaftCs.Transport (>= 1.1.2)
- System.Buffers (>= 4.6.1)
- System.Collections.Immutable (>= 9.0.0)
- System.Diagnostics.DiagnosticSource (>= 10.0.11)
- System.Formats.Asn1 (>= 10.0.11)
- System.Memory (>= 4.6.3)
- System.Runtime.CompilerServices.Unsafe (>= 6.1.2)
- System.Text.Json (>= 10.0.11)
- System.Threading.Channels (>= 10.0.11)
- System.Threading.RateLimiting (>= 10.0.11)
- System.Threading.Tasks.Extensions (>= 4.6.3)
-
.NETStandard 2.1
- BitFaster.Caching (>= 2.6.1)
- Crdt (>= 1.1.2)
- Crdt.Transport (>= 1.1.2)
- Microsoft.Bcl.AsyncInterfaces (>= 10.0.11)
- Microsoft.Bcl.TimeProvider (>= 10.0.11)
- Microsoft.Extensions.Configuration (>= 10.0.11)
- Microsoft.Extensions.Configuration.Abstractions (>= 10.0.11)
- Microsoft.Extensions.DependencyInjection (>= 10.0.11)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 10.0.11)
- Microsoft.Extensions.Diagnostics (>= 10.0.11)
- Microsoft.Extensions.Hosting.Abstractions (>= 10.0.11)
- Microsoft.Extensions.Http (>= 10.0.11)
- Microsoft.Extensions.Logging (>= 10.0.11)
- Microsoft.Extensions.Logging.Abstractions (>= 10.0.11)
- Microsoft.Extensions.Options (>= 10.0.11)
- Microsoft.Extensions.Options.ConfigurationExtensions (>= 10.0.11)
- OPCFoundation.NetStandard.Opc.Ua.Redundancy (>= 2.0.0-preview.5)
- OPCFoundation.NetStandard.Opc.Ua.Server (>= 2.0.0-preview.5)
- RaftCs (>= 1.1.2)
- RaftCs.Transport (>= 1.1.2)
- System.Collections.Immutable (>= 9.0.0)
- System.Diagnostics.DiagnosticSource (>= 10.0.11)
- System.Formats.Asn1 (>= 10.0.11)
- System.Runtime.CompilerServices.Unsafe (>= 6.1.2)
- System.Text.Json (>= 10.0.11)
- System.Threading.Channels (>= 10.0.11)
- System.Threading.RateLimiting (>= 10.0.11)
-
net10.0
- BitFaster.Caching (>= 2.6.1)
- Crdt (>= 1.1.2)
- Crdt.Transport (>= 1.1.2)
- Microsoft.Bcl.TimeProvider (>= 10.0.11)
- Microsoft.Extensions.Configuration (>= 10.0.11)
- Microsoft.Extensions.Configuration.Abstractions (>= 10.0.11)
- Microsoft.Extensions.DependencyInjection (>= 10.0.11)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 10.0.11)
- Microsoft.Extensions.Diagnostics (>= 10.0.11)
- Microsoft.Extensions.Hosting.Abstractions (>= 10.0.11)
- Microsoft.Extensions.Http (>= 10.0.11)
- Microsoft.Extensions.Logging (>= 10.0.11)
- Microsoft.Extensions.Logging.Abstractions (>= 10.0.11)
- Microsoft.Extensions.Options (>= 10.0.11)
- Microsoft.Extensions.Options.ConfigurationExtensions (>= 10.0.11)
- OPCFoundation.NetStandard.Opc.Ua.Redundancy (>= 2.0.0-preview.5)
- OPCFoundation.NetStandard.Opc.Ua.Server (>= 2.0.0-preview.5)
- RaftCs (>= 1.1.2)
- RaftCs.Transport (>= 1.1.2)
- System.Threading.RateLimiting (>= 10.0.11)
-
net8.0
- BitFaster.Caching (>= 2.6.1)
- Crdt (>= 1.1.2)
- Crdt.Transport (>= 1.1.2)
- Microsoft.Bcl.TimeProvider (>= 10.0.11)
- Microsoft.Extensions.Configuration (>= 10.0.11)
- Microsoft.Extensions.Configuration.Abstractions (>= 10.0.11)
- Microsoft.Extensions.DependencyInjection (>= 10.0.11)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 10.0.11)
- Microsoft.Extensions.Diagnostics (>= 10.0.11)
- Microsoft.Extensions.Hosting.Abstractions (>= 10.0.11)
- Microsoft.Extensions.Http (>= 10.0.11)
- Microsoft.Extensions.Logging (>= 10.0.11)
- Microsoft.Extensions.Logging.Abstractions (>= 10.0.11)
- Microsoft.Extensions.Options (>= 10.0.11)
- Microsoft.Extensions.Options.ConfigurationExtensions (>= 10.0.11)
- OPCFoundation.NetStandard.Opc.Ua.Redundancy (>= 2.0.0-preview.5)
- OPCFoundation.NetStandard.Opc.Ua.Server (>= 2.0.0-preview.5)
- RaftCs (>= 1.1.2)
- RaftCs.Transport (>= 1.1.2)
- System.Collections.Immutable (>= 9.0.0)
- System.Diagnostics.DiagnosticSource (>= 10.0.11)
- System.Formats.Asn1 (>= 10.0.11)
- System.Text.Json (>= 10.0.11)
- System.Threading.Channels (>= 10.0.11)
- System.Threading.RateLimiting (>= 10.0.11)
-
net9.0
- BitFaster.Caching (>= 2.6.1)
- Crdt (>= 1.1.2)
- Crdt.Transport (>= 1.1.2)
- Microsoft.Bcl.TimeProvider (>= 10.0.11)
- Microsoft.Extensions.Configuration (>= 10.0.11)
- Microsoft.Extensions.Configuration.Abstractions (>= 10.0.11)
- Microsoft.Extensions.DependencyInjection (>= 10.0.11)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 10.0.11)
- Microsoft.Extensions.Diagnostics (>= 10.0.11)
- Microsoft.Extensions.Hosting.Abstractions (>= 10.0.11)
- Microsoft.Extensions.Http (>= 10.0.11)
- Microsoft.Extensions.Logging (>= 10.0.11)
- Microsoft.Extensions.Logging.Abstractions (>= 10.0.11)
- Microsoft.Extensions.Options (>= 10.0.11)
- Microsoft.Extensions.Options.ConfigurationExtensions (>= 10.0.11)
- OPCFoundation.NetStandard.Opc.Ua.Redundancy (>= 2.0.0-preview.5)
- OPCFoundation.NetStandard.Opc.Ua.Server (>= 2.0.0-preview.5)
- RaftCs (>= 1.1.2)
- RaftCs.Transport (>= 1.1.2)
- System.Diagnostics.DiagnosticSource (>= 10.0.11)
- System.Formats.Asn1 (>= 10.0.11)
- System.Text.Json (>= 10.0.11)
- System.Threading.Channels (>= 10.0.11)
- System.Threading.RateLimiting (>= 10.0.11)
NuGet packages (1)
Showing the top 1 NuGet packages that depend on OPCFoundation.NetStandard.Opc.Ua.Redundancy.Server:
| Package | Downloads |
|---|---|
|
OPCFoundation.NetStandard.Opc.Ua.Redundancy.Kubernetes
OPC UA distributed server Kubernetes integration for leader election, peer discovery, and readiness. |
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 2.0.0-preview.5 | 34 | 9/17/2026 |
| 2.0.0-preview.4 | 67 | 9/2/2026 |
| 2.0.0-preview.3 | 69 | 8/28/2026 |