SiLA2.Core 10.2.6

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

SiLA2.Core

The foundational library of the SiLA2 C# SDK

SiLA Homepage https://sila-standard.com
Chat group Join the group on Slack
Maintainer Christoph Pohl (@Chamundi)
Vulnerability Policy https://sila-standard.com/vulnerability_policy

Overview

SiLA2.Core is the shared foundation that the rest of the SiLA2 C# SDK is built on. It is not a server-only package — it is referenced by clients, dynamic clients, the communication layer, ASP.NET Core integration, feature assemblies and tooling alike. Anything that needs to understand a SiLA2 Feature Definition, resolve fully-qualified identifiers, validate values against constraints, translate SiLA errors, or discover servers on the network depends on it.

It provides two layers:

1. Shared building blocks — used by every SiLA2 role (client, server, dynamic client, tooling):

  • Feature Definition Language (FDL) domain model and parsing (Feature, FeatureGenerator)
  • Fully-qualified identifier (FQI) construction and lookup helpers
  • Parameter validation against FDL constraints
  • SiLA error creation and parsing (servers raise, clients interpret)
  • mDNS service discovery — announcing (servers) and finding (clients)
  • Metadata utilities and binary-transfer contracts

2. Server hosting infrastructure — used when you build a SiLA2 server:

  • Platform-independent server host (ISiLA2Server / SiLA2Server)
  • Observable command lifecycle management with progress tracking
  • Built-in core features (SiLAService, LockController, AuthenticationService, …)
  • Binary transfer services and server-initiated ("cloud") connectivity

Where SiLA2.Core is used

SiLA2.Core is a direct dependency of the other SiLA2 packages, on both sides of the wire:

Package Role What it uses from SiLA2.Core
SiLA2.Client Client FDL model, FQI helpers, validation, error parsing, discovery
SiLA2.Client.Dynamic / SiLA2.Communication Dynamic client FDL model, FQI helpers, error parsing
SiLA2.AspNetCore Server hosting Server infrastructure, DI wiring
SiLA2.Audit Cross-cutting Domain models, metadata
SiLA2.Frontend.Razor / SiLA2.UniversalClient.Net UI / client FDL model, discovery, error parsing
Feature assemblies (*.Features) Server + client FDL model, validation, error handling

Because of this, most consumers pull in SiLA2.Core transitively — you typically reference SiLA2.Client or SiLA2.AspNetCore and get SiLA2.Core with it. You only reference it directly when writing a feature assembly or working against the domain model itself.

Platform Support

Target Framework Supported Platforms
.NET 10.0+ Windows, Linux, macOS (full feature support)
.NET Standard 2.0 .NET Framework 4.6.1+, .NET Core 2.0+, Mono 5.4+, Xamarin

SiLA2.Core multi-targets net10.0 and netstandard2.0 so the same package can back a modern .NET 10 server and a .NET Framework client application.

Installation

Install via NuGet Package Manager:

dotnet add package SiLA2.Core

Or via Package Manager Console:

Install-Package SiLA2.Core

Shared Building Blocks

The following components are used regardless of whether you are writing a client, a server, a dynamic client, or tooling.

Feature Definitions (FDL)

Feature Class

The domain representation of a SiLA2 feature definition, extended with helper methods. Clients use it to understand a server's capabilities; servers use it to validate incoming calls.

public partial class Feature
{
    // Fully qualified identifier (e.g., "org.silastandard/core/SiLAService/v1")
    public string FullyQualifiedIdentifier { get; }

    // gRPC namespace for generated stubs
    public string Namespace { get; }

    // FQI construction methods
    string GetFullyQualifiedCommandIdentifier(string commandIdentifier);
    string GetFullyQualifiedCommandParameterIdentifier(string commandId, string parameterId);
    string GetFullyQualifiedPropertyIdentifier(string propertyIdentifier);
    string GetFullyQualifiedDefinedExecutionErrorIdentifier(string errorIdentifier);
    string GetFullyQualifiedMetadataIdentifier(string metadataIdentifier);

    // Element retrieval
    List<FeatureCommand> GetDefinedCommands();
    List<FeatureProperty> GetDefinedProperties();
    List<FeatureDefinedExecutionError> GetDefinedExecutionErrors();
    List<FeatureMetadata> GetDefinedMetadata();

    // Element lookup by FQI
    object GetMatchingElement(string fullyQualifiedIdentifier);
}
FeatureGenerator

Deserializes feature definitions from XML files, streams, or online resources — equally useful in a server (loading the features it hosts) and in a client (introspecting a server's features).

public class FeatureGenerator
{
    static Feature ReadFeatureFromFile(string path);            // from file
    static Feature ReadFeatureFromStream(Stream stream);        // from embedded resource
    static Feature ReadFeatureFromOnlineResource(string url);   // from URL
    static Feature ReadFeatureFromXml(string featureXML);       // from XML string
}

Parameter Validation

Validates values against constraints defined in a feature — a server validates inbound parameters, a client can validate before sending.

Validation.ValidateParameter(value, feature, "CommandName", "ParameterName");

Error Handling

Factory methods to create and raise SiLA2 errors (server side) and to parse them back out of gRPC exceptions (client side).

public class ErrorHandling
{
    // Create / raise (server side)
    static void RaiseSiLAError(SiLAError silaError, Metadata metadata = null);
    static void RaiseBinaryTransferError(ErrorType errorType, string message);
    static SiLAError CreateDefinedExecutionError(string errorIdentifier, string message);
    static SiLAError CreateUndefinedExecutionError(string message);
    static SiLAError CreateValidationError(string parameter, string message);
    static SiLAError CreateFrameworkError(ErrorType errorType, string message);

    // Parse (client side)
    static SiLAError RetrieveSiLAError(RpcException e);
    static string HandleException(Exception e);
}

Server side — raise a defined execution error:

ErrorHandling.RaiseSiLAError(
    ErrorHandling.CreateDefinedExecutionError(
        feature.GetFullyQualifiedDefinedExecutionErrorIdentifier("InvalidTemperature"),
        "Temperature value out of range"));

Client side — interpret an error returned by a server:

try
{
    await client.SetTemperatureAsync(request);
}
catch (RpcException ex)
{
    SiLAError silaError = ErrorHandling.RetrieveSiLAError(ex);
    // inspect silaError.DefinedExecutionError / ValidationError / FrameworkError
}

Service Discovery (mDNS)

SiLA2 servers announce themselves and clients find them, both via mDNS (RFC 6762). The announcer is the server-side half; the finder is the client-side half.

// Client side — discover servers on the local network
public interface IServiceFinder { /* query available SiLA2 servers */ }

// Server side — announce this server's availability
public interface IServiceAnnouncer : IDisposable
{
    void Start();
}

ConnectionInfo / ServerDiscoveryInfo are the data classes describing a discovered server (host, port, capabilities) and are consumed primarily by clients.

Metadata Utilities

SilaClientMetadata handles SiLA client metadata carried in gRPC headers — clients attach it, servers read it.

public class SilaClientMetadata
{
    static List<string> GetAllSilaClientMetadataIdentifiers(Metadata metadata);
    static byte[] GetSilaClientMetadataValue(Metadata metadata, string fullyQualifiedMetadataIdentifier);
    static string ConvertMetadataIdentifierToWireFormat(string fullyQualifiedMetadataIdentifier);
}

Client-Side Usage

You normally talk to a server through SiLA2.Client or SiLA2.Client.Dynamic, both of which build on SiLA2.Core. The Core pieces a client relies on directly are: discovery (IServiceFinder), feature introspection (FeatureGenerator / Feature), FQI helpers, and error parsing (ErrorHandling.RetrieveSiLAError).

// Read a server's feature definition to understand its capabilities
Feature feature = FeatureGenerator.ReadFeatureFromOnlineResource(
    "https://server.example/features/TemperatureController-v1_0.sila.xml");

foreach (var command in feature.GetDefinedCommands())
    Console.WriteLine(feature.GetFullyQualifiedCommandIdentifier(command.Identifier));

// After a gRPC call, translate any failure into a structured SiLA error
try { /* client.SomeCallAsync(...) */ }
catch (RpcException ex)
{
    var silaError = ErrorHandling.RetrieveSiLAError(ex);
    // handle defined / validation / framework error
}

For the full client experience (channel creation, typed/dynamic invocation, streaming subscriptions) see the SiLA2.Client and SiLA2.Client.Dynamic packages.


Building a SiLA2 Server

This section covers the server-hosting half of SiLA2.Core. For a complete server you will also reference SiLA2.AspNetCore for the ASP.NET Core hosting integration.

Core Server Infrastructure

ISiLA2Server / SiLA2Server

The main server interface and implementation for hosting SiLA2 features.

public interface ISiLA2Server
{
    ServerInformation ServerInformation { get; }
    MetadataManager MetadataManager { get; }
    List<string> ImplementedFeatures { get; }

    void Start();
    Feature GetFeature(string featureIdentifier);
    Feature ReadFeature(string featureDefinitionFile);
    Feature ReadFeature(string resourceName, Type implementationType);
    Feature GetFeatureOfElement(string fullyQualifiedIdentifier);
}

Usage:

services.AddSingleton<ISiLA2Server, SiLA2Server>();

var feature = siLA2Server.ReadFeature(
    Path.Combine("Features", "MyFeature-v1_0.sila.xml"));

siLA2Server.Start();  // announces via mDNS
ServerInformation

Static metadata about the SiLA2 server instance.

public class ServerInformation
{
    public string Type { get; }        // Make/Model of the device
    public string Description { get; } // Server capabilities description
    public string VendorURI { get; }   // Vendor website URL
    public string Version { get; }     // Server software version
}

Configuration via appsettings.json:

{
  "ServerInfo": {
    "Type": "TemperatureController",
    "Description": "A SiLA2 temperature controller server",
    "VendorURI": "https://example.com",
    "Version": "1.0.0"
  }
}

Building a Feature Assembly (FDL → Proto → C#)

Feature assemblies reference SiLA2.Core and transform *.sila.xml FDL files into .proto (via XSLT) and then C# gRPC stubs (via protoc) at build time. From v10.2.3+ the SiLA2.Core NuGet package supplies $(SiLA2XsltPath) and $(SiLA2ProtoPath) via MSBuild props:

<Target Name="ProtoPreparation" BeforeTargets="PrepareForBuild">
  
  <Error Condition="'$(SiLA2XsltPath)' == ''" Text="SiLA2XsltPath is not set. Ensure SiLA2.Core NuGet package v10.2.3+ is referenced." />

  <Message Text="Copying Base Protos..." Importance="high" />
  <Copy SourceFiles="$(SiLA2ProtoPath)SiLAFramework.proto" DestinationFolder="Protos/" />

  <Message Text="Started XmlTransformation TemperatureController-v1_0.sila.xml -> TemperatureController.proto" Importance="high" />
  <XslTransformation XslInputPath="$(SiLA2XsltPath)fdl2proto.xsl" XmlInputPaths="$(MSBuildProjectDirectory)/Features/TemperatureController-v1_0.sila.xml" OutputPaths="Protos/TemperatureController.proto" />
  <Message Text="Finished XmlTransformation" Importance="high" />
</Target>

<Target Name="ProtoGeneration" DependsOnTargets="ProtoPreparation" AfterTargets="ProtoPreparation">
  <Message Text="Compiling Protos..." Importance="high" />
  <ItemGroup>
    <Protobuf Include="Protos\TemperatureController.proto" ProtoRoot="Protos\" GrpcServices="Both" OutputDir="Services\" />
    <Protobuf Update="Protos\SiLAFramework.proto" ProtoRoot="Protos\" CompileOutputs="false" />
  </ItemGroup>
  <Message Text="Finished Compiling Protos..." Importance="high" />
</Target>

Observable Command Management

IObservableCommandManager<TParameter, TResponse>

Manages the lifecycle of long-running observable commands with progress tracking.

public interface IObservableCommandManager<TParameter, TResponse>
{
    bool IsCommandMapBusy { get; }

    Task<ObservableCommandWrapper<TParameter, TResponse>> AddCommand(
        TParameter parameter,
        Func<IProgress<ExecutionInfo>, TParameter, CancellationToken, TResponse> func,
        TimeSpan executionDelay = default,
        bool isQueued = false);

    ObservableCommandWrapper<TParameter, TResponse> GetCommand(CommandExecutionUUID cmdExecId);

    Task RegisterForInfo(
        CommandExecutionUUID cmdExecId,
        IServerStreamWriter<ExecutionInfo> responseStream,
        CancellationToken cancellationToken);

    Task ProcessIntermediateResponses<TIntermediateResponse>(
        CommandExecutionUUID cmdExecId,
        IServerStreamWriter<TIntermediateResponse> responseStream,
        Action<TParameter, CancellationToken> handler,
        CancellationToken token);
}

Observable Command Pattern:

public class MyFeatureService : MyFeature.MyFeatureBase
{
    private readonly IObservableCommandManager<Parameters, Response> _commandManager;

    public override async Task<CommandConfirmation> MyObservableCommand(
        Parameters request, ServerCallContext context)
    {
        var command = await _commandManager.AddCommand(request, WorkerFunction);
        return command.Confirmation;
    }

    public override async Task MyObservableCommand_Info(
        CommandExecutionUUID cmdExecId,
        IServerStreamWriter<ExecutionInfo> responseStream,
        ServerCallContext context)
    {
        await _commandManager.RegisterForInfo(cmdExecId, responseStream, context.CancellationToken);
    }

    private Response WorkerFunction(
        IProgress<ExecutionInfo> progress,
        Parameters parameters,
        CancellationToken cancellationToken)
    {
        for (int i = 0; i <= 100; i += 10)
        {
            progress.Report(new ExecutionInfo
            {
                CommandStatus = i == 100
                    ? ExecutionInfo.Types.CommandStatus.FinishedSuccessfully
                    : ExecutionInfo.Types.CommandStatus.Running,
                ProgressInfo = new Real { Value = i / 100.0 }
            });
            Thread.Sleep(500);
        }
        return new Response { /* result */ };
    }
}
ObservableCommandWrapper<TParameter, TResponse>

Wraps command execution state, providing access to the CommandConfirmation, result, and completion status.

Built-in Core Services

SiLAService

The fundamental discovery service that all SiLA2 servers must implement.

Properties: ServerName, ServerUUID, ServerType, ServerDescription, ServerVendorURL, ServerVersion, ImplementedFeatures Commands: GetFeatureDefinition (returns FDL XML for a feature), SetServerName

AuthenticationService / IAuthenticationInspector

Handles user authentication and token issuance.

public interface IAuthenticationInspector
{
    Task<bool> IsAuthenticated(Login_Parameters request);
}

services.AddSingleton<IAuthenticationInspector, MyAuthInspector>();

Commands: Login, Logout

AuthorizationService

Validates access tokens for protected resources.

LockControllerService / ILockControllerService

Provides exclusive access control to server features, commands, and properties.

public class LockControllerService : LockController.LockControllerBase
{
    Task<LockServer_Responses> LockServer(LockServer_Parameters request, ServerCallContext context);
    Task<UnlockServer_Responses> UnlockServer(UnlockServer_Parameters request, ServerCallContext context);

    Task Subscribe_IsLocked(Subscribe_IsLocked_Parameters request,
        IServerStreamWriter<Subscribe_IsLocked_Responses> responseStream,
        ServerCallContext context);

    void CheckLock(Metadata metadata);
    void AddLockableItems(List<string> items);
}
Additional Controllers
  • CancelControllerService — cancellation of running observable commands
  • PauseControllerService — pausing and resuming of observable commands
  • SimulationControllerService — simulation mode for testing without physical hardware
  • ParameterConstraintsProviderService — runtime constraint information for parameters
  • ErrorRecoveryServiceImpl — recoverable error states and recovery workflows

Metadata Management (server side)

MetadataManager

Tracks metadata requirements and validates metadata in gRPC call headers.

public class MetadataManager
{
    void CollectMetadataAffections(Feature feature, object serviceInstance);
    List<KeyValuePair<string, FeatureMetadata>> GetRequiredMetadataForCall(string methodName);
    List<KeyValuePair<string, FeatureMetadata>> GetRequiredMetadataForFullyQualifiedIdentifier(string fqi);
    List<string> GetAffectedCallsByMetadata(string fullyQualifiedMetadataId);
}

gRPC Interceptors

  • ParameterValidationInterceptor — validates request parameters against FDL constraints
  • MetadataValidationInterceptor — validates required metadata headers on incoming requests
  • LoggingInterceptor — logs gRPC method calls for diagnostics

Server Quick Start

// Program.cs
var builder = WebApplication.CreateBuilder(args);

builder.Services.AddSingleton<IServiceAnnouncer, ServiceAnnouncer>();
builder.Services.AddSingleton<MetadataManager>();
builder.Services.AddSingleton<ServerInformation>(sp =>
    new ServerInformation(builder.Configuration));
builder.Services.AddSingleton<ISiLA2Server, SiLA2Server>();

// Your feature services
builder.Services.AddSingleton<TemperatureControllerService>();

var app = builder.Build();
var siLA2Server = app.Services.GetRequiredService<ISiLA2Server>();

app.MapGrpcService<SiLAService>();
app.MapGrpcService<TemperatureControllerService>();

siLA2Server.Start();  // announce via mDNS
app.Run();

Tip: if you have problems building, clear your NuGet cache: dotnet nuget locals all --clear


Binary Transfer Services

Used by both clients and servers for payloads larger than the gRPC message limit (chunked, max 2 MiB per chunk). SiLA2.Core provides the server-side services and repositories.

SiLABinaryUploadService
public class SiLABinaryUploadService : BinaryUpload.BinaryUploadBase
{
    Task<CreateBinaryResponse> CreateBinary(CreateBinaryRequest request, ServerCallContext context);
    Task UploadChunk(
        IAsyncStreamReader<UploadChunkRequest> requestStream,
        IServerStreamWriter<UploadChunkResponse> responseStream,
        ServerCallContext context);
    Task<DeleteBinaryResponse> DeleteBinary(DeleteBinaryRequest request, ServerCallContext context);
}
  • SiLABinaryDownloadService — chunked binary download to clients
  • IBinaryUploadRepository / BinaryUploadRepository — thread-safe storage for uploaded chunks
  • IBinaryDownloadRepository / BinaryDownloadRepository — thread-safe storage for downloadable data

Server-Initiated ("Cloud") Connections

These services enable SiLA2 servers (devices behind firewalls) to connect outbound to SiLA2 clients (cloud services), reversing the usual direction.

CloudEndPoint

Bidirectional streaming endpoint for server-initiated connections.

public class CloudEndPoint : CloudClientEndpoint.CloudClientEndpointBase
{
    Task ConnectSiLAServer(
        IAsyncStreamReader<SiLAServerMessage> responseStream,
        IServerStreamWriter<SiLAClientMessage> requestStream,
        ServerCallContext context);
}

Critical pattern: dual-task architecture with separate send and receive loops running in parallel to handle continuous streaming from observable properties and commands.

ConnectionConfigurationService

Manages client connections for server-initiated connection mode.

public class ConnectionConfigurationService : ConnectionConfigurationServiceBase
{
    Task<ConnectSiLAClient_Responses> ConnectSiLAClient(ConnectSiLAClient_Parameters request, ServerCallContext context);
    Task<DisconnectSiLAClient_Responses> DisconnectSiLAClient(DisconnectSiLAClient_Parameters request, ServerCallContext context);
    Task ReconnectPersistedClientsAsync();
    IDictionary<ClientConfig, CloudClientEndpointClient> KnownClients { get; }
}

Supporting services: ISiLAServerMessageService / SiLAServerMessageService, ISiLAClientMessageService / SiLAClientMessageService, ObservableCommandSubscriptionManager, ObservablePropertySubscriptionManager, and the optional ConnectionLifecycleManager / ConnectionHealthMonitor / ConnectionRetryPolicy for automatic reconnection and health monitoring.

IClientConfigurationRepository / ClientConfigurationRepository

Persists client configurations for server-initiated connections.

public interface IClientConfigurationRepository
{
    Task SaveClientAsync(ClientConfiguration config);
    Task RemoveClientAsync(string clientName);
    Task<ClientConfiguration> GetClientAsync(string clientName);
    Task<IEnumerable<ClientConfiguration>> GetAllClientsAsync();
    Task<bool> ClientExistsAsync(string clientName);
    Task ClearAllAsync();
}

For more Information

Visit the SiLA2 C# Wiki

  • SiLA2.Client — client-side gRPC communication (typed clients)
  • SiLA2.Client.Dynamic — runtime dynamic client generation (no compile-time stubs)
  • SiLA2.Communication — dynamic protobuf and marshalling
  • SiLA2.AspNetCore — ASP.NET Core hosting integration and DI extensions
  • SiLA2.Utils — network utilities, mDNS, certificates
  • SiLA2.Database.SQL — EntityFramework Core integration
  • SiLA2.Authentication — authentication and certificate management
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 was computed.  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 was computed.  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 netcoreapp2.0 was computed.  netcoreapp2.1 was computed.  netcoreapp2.2 was computed.  netcoreapp3.0 was computed.  netcoreapp3.1 was computed. 
.NET Standard netstandard2.0 is compatible.  netstandard2.1 was computed. 
.NET Framework net461 was computed.  net462 was computed.  net463 was computed.  net47 was computed.  net471 was computed.  net472 was computed.  net48 was computed.  net481 was computed. 
MonoAndroid monoandroid was computed. 
MonoMac monomac was computed. 
MonoTouch monotouch was computed. 
Tizen tizen40 was computed.  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 (9)

Showing the top 5 NuGet packages that depend on SiLA2.Core:

Package Downloads
SiLA2.Client

Client-side foundation for connecting to SiLA2 servers. Combines mDNS server discovery, gRPC channel management, binary transfer handling, and dependency-injection-based configuration into a unified client framework.

SiLA2.Communication

Runtime dynamic Protobuf and gRPC message generation for SiLA2 Features. Builds Protobuf types for commands and properties on the fly from Feature Definition Language (FDL) files, eliminating compile-time code generation.

SiLA2.Frontend.Razor

Web Frontend Extension for SiLA2.Server Package

SiLA2.AspNetCore

ASP.NET Core integration module for SiLA2 servers. Provides extension methods and dependency-injection helpers for Kestrel/TLS setup, Feature initialization from .sila.xml definitions, writable runtime configuration, and command-line argument parsing.

Inheco.SiLA2.Incubator.Server.Features

SiLA2 Server Driver including control library of INHECO Single Plate Incubator devices.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
10.2.6 236 7/5/2026
10.2.5 259 7/4/2026
10.2.4 1,677 3/13/2026
10.2.3 414 3/7/2026
10.2.2 890 2/12/2026
10.2.1 479 1/25/2026
10.2.0 641 12/23/2025
10.1.0 603 11/29/2025
10.0.0 621 11/11/2025
9.0.4 998 6/25/2025
9.0.3 513 6/21/2025
9.0.2 1,201 1/6/2025
9.0.1 580 11/17/2024
9.0.0 485 11/13/2024
8.1.2 926 10/20/2024
8.1.1 1,442 8/31/2024
8.1.0 1,690 2/11/2024
8.0.0 1,136 11/15/2023
7.5.4 2,616 10/27/2023
7.5.3 1,152 7/19/2023
Loading failed