Fora.Client 20260720.0.0

dotnet add package Fora.Client --version 20260720.0.0
                    
NuGet\Install-Package Fora.Client -Version 20260720.0.0
                    
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="Fora.Client" Version="20260720.0.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Fora.Client" Version="20260720.0.0" />
                    
Directory.Packages.props
<PackageReference Include="Fora.Client" />
                    
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 Fora.Client --version 20260720.0.0
                    
#r "nuget: Fora.Client, 20260720.0.0"
                    
#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 Fora.Client@20260720.0.0
                    
#: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=Fora.Client&version=20260720.0.0
                    
Install as a Cake Addin
#tool nuget:?package=Fora.Client&version=20260720.0.0
                    
Install as a Cake Tool

description: Quick start and API overview for the Fora Client library.

Fora.Client

Fora.Client is the canonical SDK for .NET federates connecting to an RTI via the IEEE 1516-2025 Federate Protocol. It provides a high-performance, asynchronous bridge between your federate logic and any HLA 4 compliant RTI.

Key Features

  • Asynchronous API: Fully built on async/await patterns for non-blocking simulation logic.
  • Pluggable Transports: Native support for TCP, TLS, and WebSockets (WS/WSS) to fit any network environment.
  • Resilient Session Model: Automatic Reconnect-and-Resume with unacknowledged message replay, ensuring zero data loss during transient network drops.
  • Zero-Dependency Core: Lightweight and modular, bundled with all necessary HLA abstractions and encoding helpers.
  • Structured Logging: Built-in integration with Microsoft.Extensions.Logging for deep visibility into protocol and simulation events.

Supported HLA Service Groups

πŸ›οΈ Federation Management

  • Connection, Join, Resign, and Disconnect workflows with full FP session support.
  • Synchronization point registration and coordination.
  • Federation Save & Restore: Coordinated save/restore state handling.

πŸ“’ Declaration Management

  • Object and Interaction class publication and subscription.
  • Support for hierarchy-aware subscriptions and HLA 4 advisory callbacks.

πŸ“¦ Object Management

  • Object instance registration, discovery, and lifecycle management.
  • Attribute updates and Interaction sending (Best-effort & Reliable).
  • Directed Interaction support and per-receiver attribute filtering.

πŸ”‘ Ownership Management

  • Ownership Transfer: Full support for attribute ownership acquisition and divestiture (push/pull models).
  • Ownership query services and unconditional divestiture support.

⏱️ Time Management

  • Time regulation and constraint management.
  • Time-stamped message sending (TSO) and causal delivery.
  • Support for all advance requests (TAR, TARA, NMR, NMRA, FlushQueue) and message retraction.

πŸ—ΊοΈ Data Distribution Management (DDM)

  • Multi-dimensional region creation, modification, and deletion.
  • Region association for attribute updates and interaction routing.

πŸ› οΈ Support Services

  • Handle/Name Resolution: Bidirectional conversion for Object, Attribute, Interaction, and Parameter classes.
  • Metadata Queries: Retrieve upper bounds for dimensions and available dimensions for attributes/interactions.
  • Transportation & Order: Query and manage transportation types (Reliable/Best-effort) and order types (Receive/Timestamp).
  • Full support for asynchronous update rate queries and RTI version reporting.

Install

dotnet add package Fora.Client --version 20260720.0.0

Quick Start

Start the containerized Fora RTI server:

docker run --rm -p 8080:8080 -p 15164:15164 ghcr.io/okansari/fora-rti:latest

Then connect a federate with the SDK:

using Fora.Client;
using Fora.Abstractions;
using Fora.Abstractions.Connection;

// 1. Create your Ambassador to receive callbacks
var ambassador = new MyFederateAmbassador();

// 2. Initialize and connect
await using var client = new ForaClient();
await client.ConnectAsync(ambassador, CallbackModel.Immediate, new RtiConfiguration
{
    RtiAddress = "127.0.0.1:15164",
    Transport = RtiTransportKind.Tcp
});

// 3. Join a federation
var handle = await client.JoinFederationExecutionAsync("MyFederation", "MyFederateType");

Connecting with TLS or authorization

When the server exposes the TLS FP listener on 15165, select the TLS transport:

await using var client = new ForaClient();
await client.ConnectAsync(new RtiConfiguration
{
    RtiAddress = "localhost:15165",
    Transport = RtiTransportKind.Tls
}, ambassador);

When the server enables the built-in HLAauthorizer, pass HLAplainTextPassword credentials:

await using var client = new ForaClient();
await client.ConnectAsync(new RtiConfiguration
{
    RtiAddress = "localhost:15164",
    Transport = RtiTransportKind.Tcp,
    Credentials = new HlaPlainTextPasswordCredentials("changeit")
}, ambassador);

HLAplainTextPassword credentials are clear text unless the FP connection is protected by TLS or a trusted private network.

Package Content

The package is a self-contained SDK containing:

  • Fora.Client.dll: The main SDK and protocol orchestrator.
  • Fora.Abstractions.dll: Shared HLA interfaces and exception types.
  • Fora.Encoding.dll: HLA-compliant data element encoders (IDataElement).
  • Fora.Protocol.dll: IEEE 1516-2025 Protobuf contracts.

Version

The package follows the shared Fora family release version:

20260720.0.0

The runtime client version constant remains date-based for lightweight feature checks:

var version = ForaClient.ForaClientVersion; // 20260720

See [[Release Notes]].

For a full federate programmer guide, see [[ProgrammersManual]] under UserManual/SDKs/Fora.Client.


Disclaimer

Fora environment is a free academic research toolbox provided β€œas is” without warranty or guaranteed support. It is intended solely for research and educational use and is not suitable for production or mission-critical environments. Backward compatibility is not guaranteed. Users assume all risks associated with its use. Feedback may be submitted via the Contact page.

Product Compatible and additional computed target framework versions.
.NET 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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

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
20260720.0.0 91 7/20/2026
20260705.0.0 100 7/4/2026
20260611.0.0 116 6/4/2026
20260603.0.0 111 6/3/2026
20260522.0.0 119 5/22/2026
20260503.0.0 467 5/3/2026
20260429.0.0 470 4/29/2026
20260426.0.0 478 4/25/2026
20260425.0.0 471 4/25/2026
20260423.4.0 479 4/23/2026
20260421.2.0 473 4/21/2026
20260420.1.0 471 4/20/2026
20260419.1.0 476 4/18/2026
20260418.0.0 474 4/18/2026
20260417.0.0 472 4/17/2026

20260720.0.0 - IEEE 1516-2025 Federate Protocol lifecycle, Table 44/46 response framing, Connect authorization, and an optional clock-alignment probe that times out cleanly when unsupported.