| Paquete | Último lanzamiento |
|---|---|
| ConfigurationService.hosting | |
| ConfiguratationService.client |
El servicio de configuración es un servicio de configuración distribuido para .NET. La configuración para flotas de aplicaciones, servicios y micro-servicios contenedores se puede actualizar inmediatamente sin la necesidad de volver a desplegar o reiniciar. El servicio de configuración utiliza una arquitectura Cliente/servidor PUB/Sub para notificar a los clientes suscritos sobre los cambios de configuración a medida que ocurren. La configuración se puede inyectar utilizando el patrón de opciones estándar con IOptions , IOptionsMonitor o IOptionsSnapshot .
El servicio de configuración actualmente admite la configuración de alojamiento con GIT, sistema de archivos o boved backends y admite los cambios de publicación con Redis, NATS o RabbitMQ Publish/suscripción. Los tipos de archivos admitidos son .json, .yaml, .xml y .ini.
ConfigurationBuilder estándar.IOptionsMonitor o IOptionsSnapshot para acceder a los cambios de configuración. La forma más fácil de instalar el servicio de configuración es con Nuget.
En la consola de Administrador de paquetes de Visual Studio, ingrese el siguiente comando:
Servidor:
Install-Package ConfigurationService.Hosting
Cliente:
Install-Package ConfigurationService.Client
El Servicio de configuración Host Middleware se puede agregar a la colección de servicios de una aplicación ASP.NET existente. El siguiente ejemplo configura un proveedor de almacenamiento GIT con un editor de Redis.
builder . Services . AddConfigurationService ( )
. AddGitProvider ( c =>
{
c . RepositoryUrl = "https://github.com/jamespratt/configuration-test.git" ;
c . LocalPath = "C:/local-repo" ;
} )
. AddRedisPublisher ( "localhost:6379" ) ; En startup.configure, llame MapConfigurationService en el generador de punto final. El patrón predeterminado es "/Configuración".
app . UseEndpoints ( endpoints =>
{
endpoints . MapConfigurationService ( ) ;
} ) ;El host configurado expondrá dos puntos finales de API:
configuration/ - Enumera todos los archivos en el proveedor configurado.configuration/{filename} : recupera el contenido del archivo especificado. | Propiedad | Descripción |
|---|---|
| Repositoria | URI para el repositorio remoto. |
| Nombre de usuario | Nombre de usuario para la autenticación. |
| Contraseña | Contraseña para autenticación. |
| Rama | El nombre de la rama para pagar. Cuando no se especifique, se utilizará la rama predeterminada del control remoto. |
| Matón local | Camino local para clonar hacia. |
| Pattern | La cadena de búsqueda para usar como filtro contra los nombres de los archivos. El valor predeterminado no tiene filtro (*). |
| Intervalo de votantes | El intervalo para verificar los cambios remotos. El valor predeterminado a 60 segundos. |
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 ) ;
}
.. . | Propiedad | Descripción |
|---|---|
| Camino | Ruta a los archivos de configuración. |
| Pattern | La cadena de búsqueda para usar como filtro contra los nombres de los archivos. El valor predeterminado no tiene filtro (*). |
| Incluye sujetos | Incluye el directorio actual y todos sus subdirectorios. El valor predeterminado es false . |
| Nombre de usuario | Nombre de usuario para la autenticación. |
| Contraseña | Contraseña para autenticación. |
| Dominio | Dominio para la autenticación. |
services . AddConfigurationService ( )
. AddFileSystemProvider ( c =>
{
c . Path = "C:/config" ;
c . SearchPattern = "*.json" ;
c . IncludeSubdirectories = true ;
} )
.. . | Propiedad | Descripción |
|---|---|
| Servidor | El URI del servidor Vault con puerto. |
| Camino | La ruta donde está habilitado el motor KV Secrets. |
| Authmethodinfo | El método de autenticación que se utilizará para adquirir un token de bóveda. |
| Intervalo de votantes | El intervalo para verificar los cambios remotos. El valor predeterminado a 60 segundos. |
services . AddConfigurationService ( )
. AddVaultProvider ( c =>
{
c . ServerUri = "http://localhost:8200/" ;
c . Path = "secret/" ;
c . AuthMethodInfo = new TokenAuthMethodInfo ( "myToken" ) ;
} )
.. . Se pueden agregar implementaciones personalizadas de proveedores de almacenamiento y editores implementando las interfaces IProvider e IPublisher y llamando a los métodos de extensión apropiados en AddConfigurationService:
services . AddConfigurationService ( )
. AddProvider ( new CustomStorageProvider ( ) )
. AddPublisher ( new CustomPublisher ( ) ) ; El cliente de servicio de configuración se puede configurar agregando AddRemoteConfiguration al constructor de configuración estándar. En el siguiente ejemplo, se agrega la configuración de JSON remota y se especifica un punto final redis para la suscripción de cambio de configuración. La configuración local se puede leer para configuraciones para la fuente remota utilizando múltiples instancias de Configuration Builder.
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 ( ) ; | Propiedad | Descripción |
|---|---|
| Servicio | Punto final del servicio de configuración. |
| Httpmessagehandler | El HttpMessageHandler opcional para el HttpClient . |
| Requesttimeut | El tiempo de espera para la solicitud HttpClient al servidor de configuración. El valor predeterminado a 60 segundos. |
| LoggerFactory | El tipo utilizado para configurar el sistema de registro y crear instancias de ILogger . El valor predeterminado es a NullLoggerFactory . |
| AddConfiguración | Agrega un archivo de configuración individual. |
| Nombre de configuración | Ruta o nombre del archivo de configuración en relación con el proveedor de configuración. Este valor debe coincidir con el valor especificado en la lista devuelta por la configuration/ punto final. |
| Opcional | Determina si la carga del archivo es opcional. |
| Cambio de renovación | Determina si la fuente se cargará si el archivo subyacente cambia. |
| Pasador | El tipo utilizado para analizar el archivo de configuración remota. El cliente intentará resolver esto desde la extensión del archivo de ConfigurationName si no se especifica.Tipos compatibles:
|
| AddredisSubsCribre | Agrega Redis como suscriptor de configuración. |
| AddnatsSubsCribre | Agrega NATS como suscriptor de configuración. |
| Adrabbitmqsubscriber | Agrega RabbitMQ como suscriptor de configuración. |
| Addsubscriber | Agrega un suscriptor de configuración personalizado El implementa ISubscriber . |
| AddloggerFactory | Agrega el tipo utilizado para configurar el sistema de registro y crear instancias de ILogger . |
Las muestras de implementaciones de host y del cliente se pueden ver en muestras.