| パッケージ | 最新リリース |
|---|---|
| configurationservice.hosting | |
| configurationservice.client |
構成サービスは、.NET用の分散構成サービスです。アプリケーション、サービス、コンテナ化されたマイクロサービスの艦隊の構成は、再展開または再起動する必要なく、すぐに更新できます。 Configuration Serviceは、クライアント/サーバーPUB/サブアーキテクチャを使用して、サブスクライブクライアントに構成変更を通知します。 IOptions 、 IOptionsMonitorまたはIOptionsSnapshotを使用した標準オプションパターンを使用して、構成を挿入できます。
Configuration Serviceは現在、GIT、ファイルシステム、またはVaultのバックエンドでホスティング構成をサポートし、Redis、NAT、またはRabbitMQパブリッシュ/サブスクライブによる公開の変更をサポートしています。サポートされているファイルタイプは、.json、.yaml、.xml、および.iniです。
ConfigurationBuilderパターンを使用して、任意の.NET標準2.0アプリケーションに簡単に統合します。IOptionsMonitorまたはIOptionsSnapshotを使用して構成を注入して、構成の変更にアクセスします。 構成サービスをインストールする最も簡単な方法は、NUGETを使用することです。
Visual Studioのパッケージマネージャーコンソールで、次のコマンドを入力してください。
サーバ:
Install-Package ConfigurationService.Hosting
クライアント:
Install-Package ConfigurationService.Client
構成サービスホストミドルウェアは、既存のASP.NETアプリケーションのサービスコレクションに追加できます。次の例では、Redis Publisherを使用してGitストレージプロバイダーを構成します。
builder . Services . AddConfigurationService ( )
. AddGitProvider ( c =>
{
c . RepositoryUrl = "https://github.com/jamespratt/configuration-test.git" ;
c . LocalPath = "C:/local-repo" ;
} )
. AddRedisPublisher ( "localhost:6379" ) ; startup.configureでは、エンドポイントビルダーのMapConfigurationServiceを呼び出します。デフォルトのパターンは「/構成」です。
app . UseEndpoints ( endpoints =>
{
endpoints . MapConfigurationService ( ) ;
} ) ;構成されたホストは、2つのAPIエンドポイントを公開します。
configuration/ - 設定されたプロバイダーのすべてのファイルをリストします。configuration/{filename} - 指定されたファイルの内容を取得します。 | 財産 | 説明 |
|---|---|
| repositoryurl | リモートリポジトリ用のURI。 |
| ユーザー名 | 認証用のユーザー名。 |
| パスワード | 認証のためのパスワード。 |
| 支店 | チェックアウトするブランチの名前。不特定の場合、代わりにリモートのデフォルトブランチが使用されます。 |
| LocalPath | クローンするためのローカルパス。 |
| searchpattern | ファイルの名前に対するフィルターとして使用する検索文字列。デフォルトはフィルターなし(*)です。 |
| PollingInterval | リモート変更を確認する間隔。デフォルトは60秒になります。 |
services . AddConfigurationService ( )
. AddGitProvider ( c =>
{
c . RepositoryUrl = "https://example.com/my-repo/my-repo.git" ;
c . Username = "username" ;
c . Password = "password" ;
c . Branch = "main" ;
c . LocalPath = "C:/config" ;
c . SearchPattern = ".*json" ;
c . PollingInterval = TimeSpan . FromSeconds ( 60 ) ;
}
.. . | 財産 | 説明 |
|---|---|
| パス | 構成ファイルへのパス。 |
| searchpattern | ファイルの名前に対するフィルターとして使用する検索文字列。デフォルトはフィルターなし(*)です。 |
| faningubdirectories | 現在のディレクトリとそのすべてのサブディレクトリが含まれます。デフォルトはfalseになります。 |
| ユーザー名 | 認証用のユーザー名。 |
| パスワード | 認証のためのパスワード。 |
| ドメイン | 認証のドメイン。 |
services . AddConfigurationService ( )
. AddFileSystemProvider ( c =>
{
c . Path = "C:/config" ;
c . SearchPattern = "*.json" ;
c . IncludeSubdirectories = true ;
} )
.. . | 財産 | 説明 |
|---|---|
| serveruri | ポート付きのVault Server URI。 |
| パス | KV Secrets Engineが有効になっているパス。 |
| authmethodinfo | ボールトトークンを取得するために使用される認証方法。 |
| PollingInterval | リモート変更をチェックする間隔。デフォルトは60秒になります。 |
services . AddConfigurationService ( )
. AddVaultProvider ( c =>
{
c . ServerUri = "http://localhost:8200/" ;
c . Path = "secret/" ;
c . AuthMethodInfo = new TokenAuthMethodInfo ( "myToken" ) ;
} )
.. . ストレージプロバイダーとパブリッシャーのカスタム実装は、 IProviderとIPublisherインターフェイスを実装し、AddConfigurationServiceで適切な拡張メソッドを呼び出すことで追加できます。
services . AddConfigurationService ( )
. AddProvider ( new CustomStorageProvider ( ) )
. AddPublisher ( new CustomPublisher ( ) ) ; Configuration Serviceクライアントは、標準構成ビルダーにAddRemoteConfiguration追加することで構成できます。次の例では、リモートJSON構成が追加され、構成変更サブスクリプション用にRedisエンドポイントが指定されています。構成ビルダーの複数のインスタンスを使用して、リモートソースの設定のローカル構成を読み取ることができます。
var loggerFactory = LoggerFactory . Create ( builder =>
{
builder . AddConsole ( ) ;
} ) ;
IConfiguration configuration = new ConfigurationBuilder ( )
. AddJsonFile ( "appsettings.json" , optional : false , reloadOnChange : true )
. Build ( ) ;
configuration = new ConfigurationBuilder ( )
. AddConfiguration ( configuration )
. AddRemoteConfiguration ( o =>
{
o . ServiceUri = "http://localhost:5000/configuration/" ;
o . AddConfiguration ( c =>
{
c . ConfigurationName = "test.json" ;
c . ReloadOnChange = true ;
c . Optional = false ;
} ) ;
o . AddConfiguration ( c =>
{
c . ConfigurationName = "test.yaml" ;
c . ReloadOnChange = true ;
c . Optional = false ;
c . Parser = new YamlConfigurationFileParser ( ) ;
} ) ;
o . AddRedisSubscriber ( "localhost:6379" ) ;
o . AddLoggerFactory ( loggerFactory ) ;
} )
. Build ( ) ; | 財産 | 説明 |
|---|---|
| Serviceuri | 構成サービスエンドポイント。 |
| httpmessagehandler | HttpClientのオプションのHttpMessageHandler 。 |
| requestimeout | 構成サーバーへのHttpClient要求のタイムアウト。デフォルトは60秒になります。 |
| LoggerFactory | ロギングシステムを構成し、 ILoggerのインスタンスを作成するために使用されるタイプ。デフォルトはNullLoggerFactoryです。 |
| 構成を追加します | 個々の構成ファイルを追加します。 |
| configurationname | 構成プロバイダーに対する構成ファイルのパスまたは名前。この値はconfiguration/エンドポイントによって返されるリストで指定された値と一致する必要があります。 |
| オプション | ファイルの読み込みがオプションかどうかを判断します。 |
| リロアドンチャンジ | 基礎となるファイルが変更された場合、ソースがロードされるかどうかを判断します。 |
| パーサー | リモート構成ファイルを解析するために使用されるタイプ。クライアントは、指定されていない場合、 ConfigurationNameのファイル拡張子からこれを解決しようとします。サポートされているタイプ:
|
| addredissubscriber | Configuration SubscriberとしてRedisを追加します。 |
| addnatssubscriber | 構成サブスクライバーとしてNATを追加します。 |
| addrabbitmqsubscriber | rabbitmqを構成サブスクライバーとして追加します。 |
| addsubscriber | カスタム構成サブスクライバーを追加するISubscriberを実装します。 |
| AddLoggerFactory | ロギングシステムを構成し、 ILoggerのインスタンスを作成するために使用されるタイプを追加します。 |
ホストとクライアントの両方の実装のサンプルは、サンプルで表示できます。