OPCFoundation.NetStandard.Opc.Ua.Redundancy.Server 2.0.0-preview.5

Prefix Reserved
This is a prerelease version of OPCFoundation.NetStandard.Opc.Ua.Redundancy.Server.
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
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="OPCFoundation.NetStandard.Opc.Ua.Redundancy.Server" Version="2.0.0-preview.5" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="OPCFoundation.NetStandard.Opc.Ua.Redundancy.Server" Version="2.0.0-preview.5" />
                    
Directory.Packages.props
<PackageReference Include="OPCFoundation.NetStandard.Opc.Ua.Redundancy.Server" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
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"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package OPCFoundation.NetStandard.Opc.Ua.Redundancy.Server@2.0.0-preview.5
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=OPCFoundation.NetStandard.Opc.Ua.Redundancy.Server&version=2.0.0-preview.5&prerelease
                    
Install as a Cake Addin
#tool nuget:?package=OPCFoundation.NetStandard.Opc.Ua.Redundancy.Server&version=2.0.0-preview.5&prerelease
                    
Install as a Cake Tool

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 UA ServiceLevel and 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 an IEventIdProvider such as DeterministicEventIdProvider is 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 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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

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