Fora.Client
20260720.0.0
dotnet add package Fora.Client --version 20260720.0.0
NuGet\Install-Package Fora.Client -Version 20260720.0.0
<PackageReference Include="Fora.Client" Version="20260720.0.0" />
<PackageVersion Include="Fora.Client" Version="20260720.0.0" />
<PackageReference Include="Fora.Client" />
paket add Fora.Client --version 20260720.0.0
#r "nuget: Fora.Client, 20260720.0.0"
#:package Fora.Client@20260720.0.0
#addin nuget:?package=Fora.Client&version=20260720.0.0
#tool nuget:?package=Fora.Client&version=20260720.0.0
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/awaitpatterns 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.Loggingfor 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 | Versions 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. |
-
net10.0
- Fora.Abstractions (>= 20260720.0.0)
- Fora.Core (>= 20260720.0.0)
- Fora.Encoding (>= 20260720.0.0)
- Fora.Protocol (>= 20260720.0.0)
- Fora.Telemetry (>= 20260720.0.0)
- Google.Protobuf (>= 3.34.1)
- Microsoft.Extensions.Logging.Abstractions (>= 10.0.0)
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.