Sisk

Dienstanbieter

Diese Seite wurde automatisch aus dem Englischen übersetzt. Original lesen

Service Providers ist eine Möglichkeit, Ihre Sisk-Anwendung in verschiedene Umgebungen zu portieren, indem Sie eine portable Konfigurationsdatei verwenden. Diese Funktion ermöglicht es Ihnen, den Port des Servers, Parameter und andere Optionen zu ändern, ohne den Anwendungscode für jede Umgebung anpassen zu müssen. Dieses Modul hängt von der Sisk‑Bausyntax ab und kann über die UsePortableConfiguration‑Methode konfiguriert werden.

Ein Konfigurationsanbieter wird mit IConfigurationProvider implementiert, das einen Konfigurationsleser bereitstellt und jede Implementierung erhalten kann. Standardmäßig liefert Sisk einen JSON‑Konfigurationsleser, es gibt jedoch auch ein Paket für INI‑Dateien. Sie können auch Ihren eigenen Konfigurationsanbieter erstellen und ihn registrieren mit:

C#
using var app = HttpServer.CreateBuilder()
    .UsePortableConfiguration(config =>
    {
        config.WithConfigReader<MyConfigurationReader>();
    })
    .Build();

Wie bereits erwähnt, ist der Standardanbieter eine JSON‑Datei. Standardmäßig wird nach der Datei service-config.json gesucht, und zwar im aktuellen Verzeichnis des laufenden Prozesses, nicht im Verzeichnis der ausführbaren Datei.

Sie können den Dateinamen sowie den Ort, an dem Sisk nach der Konfigurationsdatei suchen soll, ändern mit:

C#
using Sisk.Core.Http;
using Sisk.Core.Http.Hosting;

using var app = HttpServer.CreateBuilder()
    .UsePortableConfiguration(config =>
    {
        config.WithConfigFile("config.toml",
            createIfDontExists: true,
            lookupDirectories:
                ConfigurationFileLookupDirectory.CurrentDirectory |
                ConfigurationFileLookupDirectory.AppDirectory);
    })
    .Build();

Der obige Code sucht die Datei config.toml im aktuellen Verzeichnis des laufenden Prozesses. Wird sie nicht gefunden, wird anschließend im Verzeichnis der ausführbaren Datei gesucht. Existiert die Datei nicht, wird der Parameter createIfDontExists berücksichtigt, die Datei (ohne Inhalt) im zuletzt getesteten Pfad (basierend auf lookupDirectories) erstellt, und es wird ein Fehler in der Konsole ausgegeben, der die Initialisierung der Anwendung verhindert.

Tipp

Sie können sich den Quellcode des INI‑Konfigurationslesers und des JSON‑Konfigurationslesers ansehen, um zu verstehen, wie ein IConfigurationProvider implementiert ist.

Lesen von Konfigurationen aus einer JSON‑Datei #

Standardmäßig stellt Sisk einen Konfigurationsanbieter bereit, der Konfigurationen aus einer JSON‑Datei liest. Diese Datei folgt einer festen Struktur und besteht aus den folgenden Parametern:

JSON
{
    "Server": {
        "DefaultEncoding": "UTF-8",
        "ThrowExceptions": true,
        "IncludeRequestIdHeader": true
    },
    "ListeningHost": {
        "Label": "My sisk application",
        "Ports": [
            "http://localhost:80/",
            "https://localhost:443/",  // Konfigurationsdateien unterstützen ebenfalls Kommentare
        ],
        "CrossOriginResourceSharingPolicy": {
            "AllowOrigin": "*",
            "AllowOrigins": [ "*" ],   // new on 0.14
            "AllowMethods": [ "*" ],
            "AllowHeaders": [ "*" ],
            "MaxAge": 3600
        },
        "Parameters": {
            "MySqlConnection": "server=localhost;user=root;"
        }
    }
}

Die aus einer Konfigurationsdatei erzeugten Parameter können im Server‑Konstruktor abgerufen werden:

C#
using var app = HttpServer.CreateBuilder()
    .UsePortableConfiguration(config =>
    {
        config.WithParameters(paramCollection =>
        {
            string databaseConnection = paramCollection.GetValueOrThrow("MySqlConnection");
        });
    })
    .Build();

Jeder Konfigurationsleser bietet eine Möglichkeit, die Server‑Initialisierungsparameter zu lesen. Einige Eigenschaften sollen in der Prozessumgebung angegeben werden, anstatt in der Konfigurationsdatei definiert zu sein, z. B. sensible API‑Daten, API‑Schlüssel usw.

Struktur der Konfigurationsdatei #

Die JSON‑Konfigurationsdatei besteht aus den folgenden Eigenschaften:

EigenschaftErforderlichBeschreibung
ServerRequiredStellt den Server selbst mit seinen Einstellungen dar.
Server.AccessLogsStreamOptionalStandardmäßig console. Gibt den Ausgabestream für das Zugriffsprotokoll an. Kann ein Dateiname, null oder console sein.
Server.ErrorsLogsStreamOptionalStandardmäßig null. Gibt den Ausgabestream für das Fehlerprotokoll an. Kann ein Dateiname, null oder console sein.
Server.MaximumContentLengthOptional
Server.MaximumContentLengthOptionalGibt die maximale Inhaltslänge in Bytes an. Null bedeutet unbegrenzt. Wenn das Server-Objekt vorhanden ist und diese Eigenschaft weggelassen wird, ist der Wert 0 (unbegrenzt), was den Standardwert von 100 MB von HttpServerConfiguration.MaximumContentLength überschreibt.
Server.IncludeRequestIdHeaderOptionalStandardmäßig false. Gibt an, ob der HTTP‑Server den Header X-Request-Id senden soll.
Server.ThrowExceptionsOptionalStandardmäßig true. Gibt an, ob nicht behandelte Ausnahmen geworfen werden sollen. In der Produktion auf false setzen und beim Debuggen auf true.
ListeningHostRequiredStellt den Host dar, an dem der Server lauscht.
ListeningHost.LabelOptionalStellt die Anwendungsbezeichnung dar.
ListeningHost.PortsRequiredStellt ein Array von Zeichenketten dar, das der Syntax von ListeningPort entspricht.
ListeningHost.CrossOriginResourceSharingPolicyOptionalRichtet die CORS‑Header für die Anwendung ein.
ListeningHost.CrossOriginResourceSharingPolicy.AllowCredentialsOptionalStandardmäßig false. Gibt den Header Allow-Credentials an.
ListeningHost.CrossOriginResourceSharingPolicy.ExposeHeadersOptionalStandardmäßig null. Diese Eigenschaft erwartet ein Array von Zeichenketten. Gibt den Header Expose-Headers an.
ListeningHost.CrossOriginResourceSharingPolicy.AllowOriginOptionalStandardmäßig null. Diese Eigenschaft erwartet eine Zeichenkette. Gibt den Header Allow-Origin an.
ListeningHost.CrossOriginResourceSharingPolicy.AllowOriginsOptionalStandardmäßig null. Diese Eigenschaft erwartet ein Array von Zeichenketten. Gibt mehrere Allow-Origin-Header an. Siehe AllowOrigins für weitere Informationen.
ListeningHost.CrossOriginResourceSharingPolicy.AllowMethodsOptionalStandardmäßig null. Diese Eigenschaft erwartet ein Array von Zeichenketten. Gibt den Header Allow-Methods an.
ListeningHost.CrossOriginResourceSharingPolicy.AllowHeadersOptionalStandardmäßig null. Diese Eigenschaft erwartet ein Array von Zeichenketten. Gibt den Header Allow-Headers an.
ListeningHost.CrossOriginResourceSharingPolicy.MaxAgeOptionalStandardmäßig null. Diese Eigenschaft erwartet einen Integer. Gibt den Header Max-Age in Sekunden an.
ListeningHost.ParametersOptionalGibt die Eigenschaften an, die der Setup‑Methode der Anwendung übergeben werden.

Tippen, um die Dokumentation und die API-Referenz zu durchsuchen.