| Paket | Letzte Veröffentlichung |
|---|---|
| Configurationsservice.hosting | |
| Configurationsservice.client |
Der Konfigurationsdienst ist ein verteilter Konfigurationsdienst für .NET. Die Konfiguration für Anwendungsflotten, Dienste und Container-Mikrodienste kann sofort aktualisiert werden, ohne dass sie neu anwendet oder neu starten muss. Der Konfigurationsdienst verwendet eine Client/Server -Pub/Sub -Architektur, um abonnierte Clients über Konfigurationsänderungen zu informieren, sobald sie stattfinden. Die Konfiguration kann mit dem Standardoptionsmuster mit IOptions , IOptionsMonitor oder IOptionsSnapshot injiziert werden.
Der Konfigurationsdienst unterstützt derzeit die Hosting -Konfiguration mit GIT-, Dateisystem- oder Vault -Backends und unterstützt die Veröffentlichung von Änderungen mit Redis, Nats oder Rabbitmq Publish/Abonnieren. Die unterstützten Dateitypen sind .json, .yaml, .xml und .ini.
ConfigurationBuilder -Muster.IOptionsMonitor oder IOptionsSnapshot um auf Konfigurationsänderungen zuzugreifen. Der einfachste Weg, den Konfigurationsdienst zu installieren, ist Nuget.
Geben Sie in der Paket -Manager -Konsole von Visual Studio den folgenden Befehl ein:
Server:
Install-Package ConfigurationService.Hosting
Kunde:
Install-Package ConfigurationService.Client
Der Konfigurationsdienst -Host Middleware kann zur Dienstsammlung einer vorhandenen ASP.NET -Anwendung hinzugefügt werden. Das folgende Beispiel konfiguriert einen Git -Speicheranbieter mit einem Redis -Verlag.
builder . Services . AddConfigurationService ( )
. AddGitProvider ( c =>
{
c . RepositoryUrl = "https://github.com/jamespratt/configuration-test.git" ;
c . LocalPath = "C:/local-repo" ;
} )
. AddRedisPublisher ( "localhost:6379" ) ; In startup.configure können Sie MapConfigurationService im Endpoint Builder aufrufen. Das Standardmuster ist "/Konfiguration".
app . UseEndpoints ( endpoints =>
{
endpoints . MapConfigurationService ( ) ;
} ) ;Der konfigurierte Host enthält zwei API -Endpunkte:
configuration/ - listet alle Dateien im konfigurierten Anbieter auf.configuration/{filename} - Ruft den Inhalt der angegebenen Datei ab. | Eigentum | Beschreibung |
|---|---|
| Repositoryurl | URI für das Remote -Repository. |
| Benutzername | Benutzername zur Authentifizierung. |
| Passwort | Passwort für die Authentifizierung. |
| Zweig | Der Name des Zweigs zum Checkout. Wenn nicht angegeben, wird der Standardzweig der Fernbedienung stattdessen verwendet. |
| Lokalad | Lokaler Weg zum Klonen. |
| SearchPattern | Die Suchzeichenfolge, die als Filter gegen die Namen von Dateien verwendet werden soll. Standardmäßig ohne Filter (*). |
| PollingInterval | Das Intervall, um nach Fernänderungen zu überprüfen. Standardeinstellung auf 60 Sekunden. |
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 ) ;
}
.. . | Eigentum | Beschreibung |
|---|---|
| Weg | Pfad zu den Konfigurationsdateien. |
| SearchPattern | Die Suchzeichenfolge, die als Filter gegen die Namen von Dateien verwendet werden soll. Standardmäßig ohne Filter (*). |
| Beinhaltet die Verzeichnis | Enthält das aktuelle Verzeichnis und alle seine Unterverzeichnisse. Standardmäßig false . |
| Benutzername | Benutzername zur Authentifizierung. |
| Passwort | Passwort für die Authentifizierung. |
| Domain | Domäne zur Authentifizierung. |
services . AddConfigurationService ( )
. AddFileSystemProvider ( c =>
{
c . Path = "C:/config" ;
c . SearchPattern = "*.json" ;
c . IncludeSubdirectories = true ;
} )
.. . | Eigentum | Beschreibung |
|---|---|
| Serveruri | Der Vault -Server -URI mit Port. |
| Weg | Der Pfad, in dem der KV Secrets Engine aktiviert ist. |
| AuthMethodinfo | Die Auth -Methode, mit der ein Tresor -Token erfasst werden soll. |
| PollingInterval | Das Intervall, um nach Fernänderungen zu überprüfen. Standardeinstellung auf 60 Sekunden. |
services . AddConfigurationService ( )
. AddVaultProvider ( c =>
{
c . ServerUri = "http://localhost:8200/" ;
c . Path = "secret/" ;
c . AuthMethodInfo = new TokenAuthMethodInfo ( "myToken" ) ;
} )
.. . Benutzerdefinierte Implementierungen von Speicheranbietern und Publisher können hinzugefügt werden, indem die IProvider und IPublisher -Schnittstellen implementiert und die entsprechenden Erweiterungsmethoden unter AddConfigurationsservice aufgerufen werden:
services . AddConfigurationService ( )
. AddProvider ( new CustomStorageProvider ( ) )
. AddPublisher ( new CustomPublisher ( ) ) ; Der Konfigurationsdienst -Client kann durch Hinzufügen von AddRemoteConfiguration zum Standard -Konfigurations Builder konfiguriert werden. Im folgenden Beispiel wird die Remote -JSON -Konfiguration hinzugefügt und ein Redis -Endpunkt für die Konfigurationsänderungsabonnement angegeben. Lokale Konfiguration kann für Einstellungen für die Remote -Quelle unter Verwendung mehrerer Instanzen des Konfigurations Builders gelesen werden.
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 ( ) ; | Eigentum | Beschreibung |
|---|---|
| Serviceuri | Konfigurationsdienstendpunkt. |
| HttpMessageHandler | Das optionale HttpMessageHandler für das HttpClient . |
| RequestTimeout | Die Zeitüberschreitung für die HttpClient -Anforderung an den Konfigurationsserver. Standardeinstellung auf 60 Sekunden. |
| Loggerfaktor | Der Typ, der zum Konfigurieren des Protokollierungssystems und zum Erstellen von Instanzen von ILogger verwendet wird. Standardmäßig NullLoggerFactory . |
| AddConfiguration | Fügt eine einzelne Konfigurationsdatei hinzu. |
| Konfigurationsname | Pfad oder Name der Konfigurationsdatei relativ zum Konfigurationsanbieter. Dieser Wert sollte mit dem in der Liste angegebenen Wert übereinstimmen, der von der configuration/ dem Endpunkt zurückgegeben wurde. |
| Optional | Bestimmt, ob das Laden der Datei optional ist. |
| Reloadonchange | Bestimmt, ob die Quelle geladen wird, wenn sich die zugrunde liegende Datei ändert. |
| Parser | Der Typ, mit dem die Remote -Konfigurationsdatei analysiert wird. Der Client versucht, dies aus der Dateierweiterung des ConfigurationName zu beheben, wenn sie nicht angegeben sind.Unterstützte Typen:
|
| AddRedISSubscriber | Fügt Redis als Konfigurationsabonnenten hinzu. |
| AddnatsSubscriber | Fügt NATs als Konfigurationsabonnenten hinzu. |
| Addrabbitmqsubscriber | Fügt Rabbitmq als Konfigurationsabonnenten hinzu. |
| Fügtsubscriber | Fügt einen benutzerdefinierten Konfigurationsabonnenten hinzu, den ISubscriber implementiert. |
| AddloggerFactory | Fügt den Typ hinzu, der zum Konfigurieren des Protokollierungssystems verwendet wird und Instanzen von ILogger erstellt. |
Beispiele von Host- und Client -Implementierungen können bei Stichproben betrachtet werden.