| Emballer | Dernière version |
|---|---|
| ConfigurationService.hosting | |
| ConfigurationService.Client |
Le service de configuration est un service de configuration distribué pour .NET. La configuration des flottes d'applications, de services et de micro-services conteneurisés peut être mise à jour immédiatement sans avoir besoin de redéployer ou de redémarrer. Configuration Service utilise une architecture Client / Server Pub / Sub pour informer les clients abonnés des modifications de configuration au fur et à mesure qu'ils se produisent. La configuration peut être injectée à l'aide du modèle d'options standard avec IOptions , IOptionsMonitor ou IOptionsSnapshot .
Le service de configuration prend actuellement en charge la configuration d'hébergement avec Git, Système de fichiers ou backends de coffre-fort et prend en charge les modifications de publication avec Redis, NATS ou Rabbitmq Publish / Subscribe. Les types de fichiers pris en charge sont .json, .yaml, .xml et .ini.
ConfigurationBuilder standard.IOptionsMonitor ou IOptionsSnapshot pour accéder aux modifications de configuration. La façon la plus simple d'installer le service de configuration est avec NuGet.
Dans la console Package Manager de Visual Studio, entrez la commande suivante:
Serveur:
Install-Package ConfigurationService.Hosting
Client:
Install-Package ConfigurationService.Client
Le middleware hôte de service de configuration peut être ajouté à la collection de services d'une application ASP.NET existante. L'exemple suivant configure un fournisseur de stockage GIT avec un éditeur Redis.
builder . Services . AddConfigurationService ( )
. AddGitProvider ( c =>
{
c . RepositoryUrl = "https://github.com/jamespratt/configuration-test.git" ;
c . LocalPath = "C:/local-repo" ;
} )
. AddRedisPublisher ( "localhost:6379" ) ; Dans startup.configure, appelez MapConfigurationService sur le générateur de points de terminaison. Le modèle par défaut est "/ configuration".
app . UseEndpoints ( endpoints =>
{
endpoints . MapConfigurationService ( ) ;
} ) ;L'hôte configuré exposera deux points de terminaison API:
configuration/ - répertorie tous les fichiers au fournisseur configuré.configuration/{filename} - récupère le contenu du fichier spécifié. | Propriété | Description |
|---|---|
| Référentiel | URI pour le référentiel distant. |
| Nom d'utilisateur | Nom d'utilisateur pour l'authentification. |
| Mot de passe | Mot de passe pour l'authentification. |
| Bifurquer | Le nom de la branche à la caisse. Lorsqu'il n'est pas précisé, la branche par défaut de la télécommande sera utilisée à la place. |
| Chemin local | Chemin local pour se cloner. |
| Recherche de recherche | La chaîne de recherche à utiliser comme filtre par rapport aux noms des fichiers. Par défaut, aucun filtre (*). |
| PollingInterval | L'intervalle pour vérifier les modifications à distance. Par défaut à 60 secondes. |
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 ) ;
}
.. . | Propriété | Description |
|---|---|
| Chemin | Chemin vers les fichiers de configuration. |
| Recherche de recherche | La chaîne de recherche à utiliser comme filtre par rapport aux noms des fichiers. Par défaut, aucun filtre (*). |
| Incluent les répertoires | Comprend le répertoire actuel et tous ses sous-répertoires. Par défaut est false . |
| Nom d'utilisateur | Nom d'utilisateur pour l'authentification. |
| Mot de passe | Mot de passe pour l'authentification. |
| Domaine | Domaine pour l'authentification. |
services . AddConfigurationService ( )
. AddFileSystemProvider ( c =>
{
c . Path = "C:/config" ;
c . SearchPattern = "*.json" ;
c . IncludeSubdirectories = true ;
} )
.. . | Propriété | Description |
|---|---|
| Serveruri | L'URI du serveur Vault avec port. |
| Chemin | Le chemin où le moteur KV Secrets est activé. |
| Authmethodinfo | La méthode Auth à utiliser pour acquérir un jeton Vault. |
| PollingInterval | L'intervalle pour vérifier les modifications à distance. Par défaut à 60 secondes. |
services . AddConfigurationService ( )
. AddVaultProvider ( c =>
{
c . ServerUri = "http://localhost:8200/" ;
c . Path = "secret/" ;
c . AuthMethodInfo = new TokenAuthMethodInfo ( "myToken" ) ;
} )
.. . Les implémentations personnalisées des fournisseurs de stockage et des éditeurs peuvent être ajoutées en mettant en œuvre les interfaces IProvider et IPublisher et en appelant les méthodes d'extension appropriées sur AddConfigurations Service:
services . AddConfigurationService ( )
. AddProvider ( new CustomStorageProvider ( ) )
. AddPublisher ( new CustomPublisher ( ) ) ; Le client du service de configuration peut être configuré en ajoutant AddRemoteConfiguration au constructeur de configuration standard. Dans l'exemple suivant, une configuration JSON distante est ajoutée et un point de terminaison Redis est spécifié pour l'abonnement à modification de configuration. La configuration locale peut être lue pour les paramètres de la source distante en utilisant plusieurs instances de constructeur de configuration.
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 ( ) ; | Propriété | Description |
|---|---|
| Service | Point de terminaison du service de configuration. |
| HttpMessageHandler | Le HttpMessageHandler en option pour le HttpClient . |
| Demandetimeout | Le délai d'expiration de la demande HttpClient au serveur de configuration. Par défaut à 60 secondes. |
| LoggerFactory | Le type utilisé pour configurer le système de journalisation et créer des instances d' ILogger . Par défaut à NullLoggerFactory . |
| Addconfiguration | Ajoute un fichier de configuration individuel. |
| Configuration Name | Chemin ou nom du fichier de configuration par rapport au fournisseur de configuration. Cette valeur doit correspondre à la valeur spécifiée dans la liste renvoyée par la configuration/ point de terminaison. |
| Facultatif | Détermine si le chargement du fichier est facultatif. |
| Reloadonchange | Détermine si la source sera chargée si le fichier sous-jacent change. |
| Analyseur | Le type utilisé pour analyser le fichier de configuration distant. Le client tentera de résoudre ce problème à partir de l'extension de fichier de ConfigurationName si elle n'est pas spécifiée.Types pris en charge:
|
| Addredissubscriber | Ajoute Redis comme abonné de configuration. |
| AddnatsSubscriber | Ajoute NATS comme abonné de configuration. |
| Addrabbitmqscriber | Ajoute RabbitMQ comme abonné à la configuration. |
| AddSubscriber | Ajoute un abonné de configuration personnalisé, les implémentés ISubscriber . |
| AddLoggerFactory | Ajoute le type utilisé pour configurer le système de journalisation et créer des instances d' ILogger . |
Des échantillons d'implémentations hôtes et clients peuvent être consultés à des échantillons.