Skip to content

Nalix.Hosting

Nalix.Hosting provides Microsoft-style host and builder APIs for Nalix servers. It wires packet registry discovery, packet dispatch, configuration application, and transport lifecycle into a familiar builder/build/run workflow.

Source Mapping

  • src/Nalix.Hosting/NetworkApplication.cs
  • src/Nalix.Hosting/NetworkApplicationBuilder.cs
  • src/Nalix.Hosting/INetworkApplicationBuilder.cs
  • src/Nalix.Hosting/Bootstrap.cs
  • src/Nalix.Hosting/DefaultProtocol.cs

Hosting Flow

flowchart LR
    subgraph Config ["Configuration"]
        A["CreateBuilder()"] --> B["Register Services"]
        B --> C["Scan Packets"]
        C --> D["Bind Protocols"]
    end

    subgraph Runtime ["Execution"]
        D --> E["Build & Activate"]
        E --> F["Bootstrap"]
        F --> G["Dispatcher"]
        G --> H["Listeners"]
    end

What it gives you

  • NetworkApplication.CreateBuilder()
  • Fluent INetworkApplicationBuilder configuration
  • Automatic packet registry creation from assembly scanning
  • Application lifecycle management through ActivateAsync, DeactivateAsync, and RunAsync
  • Optimized server defaults through Bootstrap (Module Initializer)
  • Integrated dependency injection via InstanceManager

Core APIs

NetworkApplication

NetworkApplication is the runnable entry point. It manages the coordinated startup and shutdown of all server components.

INetworkApplicationBuilder

The builder exposes fluent methods for configuring the server:

  • ConfigureLogging(...)
  • ConfigureConnectionHub(...)
  • ConfigureBufferPoolManager(...)
  • ConfigureObjectPoolManager(...)
  • ConfigureCertificate(...)
  • ConfigurePacketRegistry(...)
  • ConfigureDispatch(...)
  • Configure<TOptions>(...)
  • ScanPackets<TMarker>()
  • AddPacketNamespace(...)
  • ScanHandlers<TMarker>()
  • AddHandler<THandler>()
  • AddMetadataProvider<TProvider>()
  • BindTcp<TProtocol>().Bind()
  • BindTcp<TProtocol>().OnPort(port).Bind()
  • BindUdp<TProtocol>().Bind()
  • BindUdp<TProtocol>().WithAuthentication(authen).Bind()

Bootstrap

The Bootstrap static class provides global initialization, including server-side configuration defaults, optional ThreadPool tuning, diagnostic subscription, and high-precision timers on Windows.

Minimal example

using Microsoft.Extensions.Logging;
using Nalix.Hosting;
using Nalix.Network.Options;

var app = NetworkApplication.CreateBuilder()
    .Configure<NetworkSocketOptions>(options =>
    {
        options.Port = 57206;
    })
    .ScanPackets<MyPacket>()
    .ScanHandlers<MyHandlers>()
    .BindTcp<MyProtocol>().Bind()
    .Build();

await app.RunAsync();

Suggested reading

  1. Network Application API
  2. Hosting Options
  3. Nalix.Network