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:
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:
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:
{
"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:
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:
| Eigenschaft | Erforderlich | Beschreibung |
|---|---|---|
| Server | Required | Stellt den Server selbst mit seinen Einstellungen dar. |
| Server.AccessLogsStream | Optional | Standardmäßig console. Gibt den Ausgabestream für das Zugriffsprotokoll an. Kann ein Dateiname, null oder console sein. |
| Server.ErrorsLogsStream | Optional | Standardmäßig null. Gibt den Ausgabestream für das Fehlerprotokoll an. Kann ein Dateiname, null oder console sein. |
| Server.MaximumContentLength | Optional | |
| Server.MaximumContentLength | Optional | Gibt 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.IncludeRequestIdHeader | Optional | Standardmäßig false. Gibt an, ob der HTTP‑Server den Header X-Request-Id senden soll. |
| Server.ThrowExceptions | Optional | Standardmäßig true. Gibt an, ob nicht behandelte Ausnahmen geworfen werden sollen. In der Produktion auf false setzen und beim Debuggen auf true. |
| ListeningHost | Required | Stellt den Host dar, an dem der Server lauscht. |
| ListeningHost.Label | Optional | Stellt die Anwendungsbezeichnung dar. |
| ListeningHost.Ports | Required | Stellt ein Array von Zeichenketten dar, das der Syntax von ListeningPort entspricht. |
| ListeningHost.CrossOriginResourceSharingPolicy | Optional | Richtet die CORS‑Header für die Anwendung ein. |
| ListeningHost.CrossOriginResourceSharingPolicy.AllowCredentials | Optional | Standardmäßig false. Gibt den Header Allow-Credentials an. |
| ListeningHost.CrossOriginResourceSharingPolicy.ExposeHeaders | Optional | Standardmäßig null. Diese Eigenschaft erwartet ein Array von Zeichenketten. Gibt den Header Expose-Headers an. |
| ListeningHost.CrossOriginResourceSharingPolicy.AllowOrigin | Optional | Standardmäßig null. Diese Eigenschaft erwartet eine Zeichenkette. Gibt den Header Allow-Origin an. |
| ListeningHost.CrossOriginResourceSharingPolicy.AllowOrigins | Optional | Standardmäßig null. Diese Eigenschaft erwartet ein Array von Zeichenketten. Gibt mehrere Allow-Origin-Header an. Siehe AllowOrigins für weitere Informationen. |
| ListeningHost.CrossOriginResourceSharingPolicy.AllowMethods | Optional | Standardmäßig null. Diese Eigenschaft erwartet ein Array von Zeichenketten. Gibt den Header Allow-Methods an. |
| ListeningHost.CrossOriginResourceSharingPolicy.AllowHeaders | Optional | Standardmäßig null. Diese Eigenschaft erwartet ein Array von Zeichenketten. Gibt den Header Allow-Headers an. |
| ListeningHost.CrossOriginResourceSharingPolicy.MaxAge | Optional | Standardmäßig null. Diese Eigenschaft erwartet einen Integer. Gibt den Header Max-Age in Sekunden an. |
| ListeningHost.Parameters | Optional | Gibt die Eigenschaften an, die der Setup‑Methode der Anwendung übergeben werden. |