サービス プロバイダー
このページは英語から自動翻訳されています。 原文を読む
サービス プロバイダーは、Sisk アプリケーションをさまざまな環境に移植するための方法です。この機能により、サーバーのポート、パラメーター、およびその他のオプションを変更できますが、アプリケーション コードを各環境用に変更する必要はありません。このモジュールは、Sisk の構築構文に依存し、UsePortableConfiguration メソッドを使用して構成できます。
構成プロバイダーは、IConfigurationProvider で実装され、構成リーダーを提供し、任意の実装を受け取ることができます。デフォルトでは、Sisk では JSON 構成リーダーが提供されますが、INI ファイル用のパッケージもあります。独自の構成プロバイダーを作成し、次のように登録することもできます。
using var app = HttpServer.CreateBuilder()
.UsePortableConfiguration(config =>
{
config.WithConfigReader<MyConfigurationReader>();
})
.Build();前述のように、デフォルトのプロバイダーは JSON ファイルです。デフォルトでは、service-config.json という名前のファイルが検索され、実行中のプロセスのカレント ディレクトリで検索されますが、実行可能ファイルのディレクトリではありません。
ファイル名を変更したり、Sisk が構成ファイルを検索する場所を指定したりすることもできます。
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();上記のコードは、実行中のプロセスのカレント ディレクトリで config.toml ファイルを検索します。如果見つからない場合は、実行可能ファイルのディレクトリで検索します。如果ファイルが存在しない場合、createIfDontExists パラメーターが尊重され、最後にテストされたパス(lookupDirectories に基づく)にファイルが作成され、エラーがコンソールに表示され、アプリケーションの初期化が阻止されます。
ヒント
INI 構成リーダーと JSON 構成リーダーのソース コードを参照して、IConfigurationProvider がどのように実装されるかを理解することができます。
JSON ファイルからの構成の読み取り #
デフォルトでは、Sisk では JSON ファイルから構成を読み取る構成プロバイダーが提供されます。このファイルは固定構造を持ち、次のパラメーターで構成されます。
{
"Server": {
"DefaultEncoding": "UTF-8",
"ThrowExceptions": true,
"IncludeRequestIdHeader": true
},
"ListeningHost": {
"Label": "My sisk application",
"Ports": [
"http://localhost:80/",
"https://localhost:443/", // 構成ファイルもコメントをサポートします
],
"CrossOriginResourceSharingPolicy": {
"AllowOrigin": "*",
"AllowOrigins": [ "*" ], // 0.14 で新しく追加されました
"AllowMethods": [ "*" ],
"AllowHeaders": [ "*" ],
"MaxAge": 3600
},
"Parameters": {
"MySqlConnection": "server=localhost;user=root;"
}
}
}構成ファイルから作成されたパラメーターは、サーバー コンストラクターでアクセスできます。
using var app = HttpServer.CreateBuilder()
.UsePortableConfiguration(config =>
{
config.WithParameters(paramCollection =>
{
string databaseConnection = paramCollection.GetValueOrThrow("MySqlConnection");
});
})
.Build();各構成リーダーは、サーバー初期化パラメーターを読み取る方法を提供します。プロセス環境で定義されるべきプロパティ (機密 API データ、API キーなど) は、構成ファイルで定義するのではなく、別の方法で指定する必要があります。
構成ファイルの構造 #
JSON 構成ファイルは、次のプロパティで構成されます。
| プロパティ | 必須 | 説明 |
|---|---|---|
| Server | 必須 | サーバー自身とその設定を表します。 |
| Server.AccessLogsStream | 省略可能 | デフォルトは console。アクセス ログの出力ストリームを指定します。ファイル名、null、または console のいずれかになります。 |
| Server.ErrorsLogsStream | 省略可能 | デフォルトは null。エラー ログの出力ストリームを指定します。ファイル名、null、または console のいずれかになります。 |
| Server.MaximumContentLength | 省略可能 | |
| Server.MaximumContentLength | 省略可能 | デフォルトは 0。コンテンツの最大長 (バイト単位) を指定します。0 は無制限を意味します。 |
| Server.IncludeRequestIdHeader | 省略可能 | デフォルトは false。HTTP サーバーが X-Request-Id ヘッダーを送信するかどうかを指定します。 |
| Server.ThrowExceptions | 省略可能 | デフォルトは true。未処理例外がスローされるかどうかを指定します。プロダクション環境では false、デバッグ環境では true に設定します。 |
| ListeningHost | 必須 | サーバーのリスニング ホストを表します。 |
| ListeningHost.Label | 省略可能 | アプリケーションのラベルを表します。 |
| ListeningHost.Ports | 必須 | ListeningPort 構文に一致する文字列の配列を表します。 |
| ListeningHost.CrossOriginResourceSharingPolicy | 省略可能 | アプリケーションの CORS ヘッダーを設定します。 |
| ListeningHost.CrossOriginResourceSharingPolicy.AllowCredentials | 省略可能 | デフォルトは false。Allow-Credentials ヘッダーを指定します。 |
| ListeningHost.CrossOriginResourceSharingPolicy.ExposeHeaders | 省略可能 | デフォルトは null。文字列の配列を期待します。Expose-Headers ヘッダーを指定します。 |
| ListeningHost.CrossOriginResourceSharingPolicy.AllowOrigin | 省略可能 | デフォルトは null。文字列を期待します。Allow-Origin ヘッダーを指定します。 |
| ListeningHost.CrossOriginResourceSharingPolicy.AllowOrigins | 省略可能 | デフォルトは null。文字列の配列を期待します。複数の Allow-Origin ヘッダーを指定します。詳細については、AllowOrigins を参照してください。 |
| ListeningHost.CrossOriginResourceSharingPolicy.AllowMethods | 省略可能 | デフォルトは null。文字列の配列を期待します。Allow-Methods ヘッダーを指定します。 |
| ListeningHost.CrossOriginResourceSharingPolicy.AllowHeaders | 省略可能 | デフォルトは null。文字列の配列を期待します。Allow-Headers ヘッダーを指定します。 |
| ListeningHost.CrossOriginResourceSharingPolicy.MaxAge | 省略可能 | デフォルトは null。整数を期待します。Max-Age ヘッダー (秒単位) を指定します。 |
| ListeningHost.Parameters | 省略可能 | アプリケーションの設定メソッドに提供されるプロパティを指定します。 |