Skip to main content
net10.0.NETFramework4.7.2.NETFramework4.8net8.0net9.0.NETStandard2.1

OPC UA xRegistry generic server-side registry node managers: content-addressed resource resolution (Opaque NodeId fast path), the CreateResource/Write/Close registration lifecycle, and federation.

Published
Sep 30, 2026
20d ago
Total Downloads
190
190

Install

dotnet add package OPCFoundation.NetStandard.Opc.Ua.XRegistry.Server --version 2.0.0-preview.6
ProductVersions
.NET
net10.0net8.0net9.0
.NET Standard
netstandard2.1
Other
.NETFramework4.7.2.NETFramework4.8

README

Opc.Ua.XRegistry.Server

The generic server-side xRegistry registry node managers for OPC UA. They serve a structurally addressed registry with an independent content fast path.

XRegistryRegistrationNodeManager, XRegistryFastPathNodeManager, and XRegistryFederationNodeManager derive from AsyncCustomNodeManager. Host them through IAsyncNodeManagerFactory; directly constructed managers use the same awaited lifecycle. Custom subclasses override LoadPredefinedNodesAsync, CreateAddressSpaceAsync, and SessionClosingAsync, awaiting their base implementations. Await DeleteAddressSpaceAsync before disposal to drain active operations and release handles.

The managers provide:

  • Fast path — publishes registered resources under an Opaque NodeId whose Identifier is the raw content-id bytes, so a consumer resolves a resource in a single Read.
  • Registration — the model's own lifecycle: CreateGroup / GetOrCreateGroup on the registry root, CreateResource / GetOrCreateResource on a group, and — because ResourceType is a FileType — the document is transferred with the inherited Open / Read / Write / Close. Xid remains the structural registry-relative Resource or Version path. Only a successful Close with accepted, byte-different staged content updates Version Epoch/ModifiedAt; it computes a separate content key (via IResourceContentIdProvider) and publishes or reuses the reference-counted Opaque fast-path node. Empty, rejected, clean, and byte-identical closes are side-effect free, and each Version permits one writer. Delete(ExpectedEpoch) gives optimistic concurrency on removal.
  • Federation — publishes a proxy for a resource hosted by a remote registry as a real ResourceType instance carrying an ExternalReference and ResourceUrl while retaining structural ResourceId, VersionId, and Xid.
  • Events — optionally emits the xRegistry 0.5.0 native OPC UA event hierarchy for successful registry interactions and projection reconciliation. Event support is disabled by default and requires an absolute EventSourceUrl; generated concrete EventState types are reported through the Server/registry/group/resource notifier chain.

Version events use the corresponding version file as SourceNode; resource events use the committed default-version file. Deleted events retain their former source identity and are reported through the nearest surviving notifier. Enabling events emits every mandatory event for each supported mutation; whole-registry creation/deletion events remain recommendations.

Version Labels, Epoch, CreatedAt, and ModifiedAt are independent per Version. Resource Meta uses synchronized MetaLabels, MetaEpoch, MetaCreatedAt, and MetaModifiedAt; Version changes do not mutate Resource Meta unless Versions or default-Version state also change.

Existing projection strategies and the original six-parameter XRegistryProjectionContext constructor remain compatible with events disabled. Event-enabled projections provide one atomic generation through IXRegistryProjectionGenerationProvider; version-aware projections opt into IXRegistryVersionedProjectionStrategy.

Document bytes live behind an injectable IXRegistryResourceStore; an in-process and a file-backed implementation ship with the package. Registry writes always require a SignAndEncrypt secure channel.

A concrete registry (for example a schema registry) supplies an IResourceContentIdProvider and its own companion namespace/NodeSet.

options.EventsEnabled = true;
options.EventSourceUrl = "https://registry.example.com";
options.GroupsAttributeName = "groups";
options.ResourcesAttributeName = "resources";
options.ResourceDocumentAttributeName = "schema";

Changes from Previous Version

v2.0.0-preview.5v2.0.0-preview.6
Added Dependencies

Adoption Assessment

A verified publisher signal is available. Assess fit from the package's supported frameworks, license and dependency graph rather than popularity alone.

This version is marked prerelease. Validate its API and upgrade path before production use.No SPDX license expression is published. Review the license text and your organisation's policy before redistribution.Compatibility metadata lists 6 target frameworks; confirm the exact target used by your application.The published metadata declares 137 direct dependency entries across framework groups. Inspect the resolved dependency graph for your target framework.

Related Guides & Workflows

Learn how to evaluate, integrate, or audit this package in your .NET project.