| Pacote | Última lançamento |
|---|---|
| Configurações Service.Hosting | |
| Configurationservice.client |
O serviço de configuração é um serviço de configuração distribuído para .NET. A configuração para frotas de aplicativos, serviços e micro-serviços em contêiner pode ser atualizada imediatamente sem a necessidade de reimplantar ou reiniciar. O Serviço de Configuração usa um Pub/Sub Arquitetura do cliente/servidor para notificar clientes subscritos de alterações de configuração à medida que acontecem. A configuração pode ser injetada usando o padrão de opções padrão com IOptions , IOptionsMonitor ou IOptionsSnapshot .
Atualmente, o Serviço de Configuração suporta a configuração de hospedagem com o GIT, o sistema de arquivos ou os back -ends do Vault e suporta alterações de publicação com Redis, Nats ou RabbitMQ Publish/Subscribe. Os tipos de arquivo suportados são .json, .yaml, .xml e .ini.
ConfigurationBuilder .IOptionsMonitor ou IOptionsSnapshot para acessar alterações de configuração. A maneira mais fácil de instalar o serviço de configuração é com o NUGET.
No console do gerenciador de pacotes do Visual Studio, insira o seguinte comando:
Servidor:
Install-Package ConfigurationService.Hosting
Cliente:
Install-Package ConfigurationService.Client
O middleware do host de serviço de configuração pode ser adicionado à coleta de serviços de um aplicativo ASP.NET existente. O exemplo a seguir configura um provedor de armazenamento Git com um editor Redis.
builder . Services . AddConfigurationService ( )
. AddGitProvider ( c =>
{
c . RepositoryUrl = "https://github.com/jamespratt/configuration-test.git" ;
c . LocalPath = "C:/local-repo" ;
} )
. AddRedisPublisher ( "localhost:6379" ) ; No startup.configure, ligue para o MapConfigurationService no Builder Builder. O padrão padrão é "/configuração".
app . UseEndpoints ( endpoints =>
{
endpoints . MapConfigurationService ( ) ;
} ) ;O host configurado exporá dois terminais da API:
configuration/ - lista todos os arquivos no provedor configurado.configuration/{filename} - Recupera o conteúdo do arquivo especificado. | Propriedade | Descrição |
|---|---|
| RepositoryUrl | URI para o repositório remoto. |
| Nome de usuário | Nome de usuário para autenticação. |
| Senha | Senha para autenticação. |
| Filial | O nome da filial para fazer o checkout. Quando não especificado, a filial padrão do controle remoto será usado. |
| Localpath | Caminho local para clonar. |
| SearchPattern | A sequência de pesquisa a ser usada como um filtro contra os nomes dos arquivos. Padrões para nenhum filtro (*). |
| PollingInterval | O intervalo para verificar se há alterações remotas. Padrões para 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 ) ;
}
.. . | Propriedade | Descrição |
|---|---|
| Caminho | Caminho para os arquivos de configuração. |
| SearchPattern | A sequência de pesquisa a ser usada como um filtro contra os nomes dos arquivos. Padrões para nenhum filtro (*). |
| Inclui subdirectores | Inclui o diretório atual e todos os seus subdiretos. Padrões para false . |
| Nome de usuário | Nome de usuário para autenticação. |
| Senha | Senha para autenticação. |
| Domínio | Domínio para autenticação. |
services . AddConfigurationService ( )
. AddFileSystemProvider ( c =>
{
c . Path = "C:/config" ;
c . SearchPattern = "*.json" ;
c . IncludeSubdirectories = true ;
} )
.. . | Propriedade | Descrição |
|---|---|
| Serveruri | O URI do servidor Vault com porta. |
| Caminho | O caminho em que o mecanismo de Secrets KV está ativado. |
| Authmethodinfo | O método de autenticação a ser usado para adquirir um token do cofre. |
| PollingInterval | O intervalo para verificar se há alterações remotas. Padrões para 60 segundos. |
services . AddConfigurationService ( )
. AddVaultProvider ( c =>
{
c . ServerUri = "http://localhost:8200/" ;
c . Path = "secret/" ;
c . AuthMethodInfo = new TokenAuthMethodInfo ( "myToken" ) ;
} )
.. . As implementações personalizadas de provedores e editores de armazenamento podem ser adicionados implementando as interfaces IProvider e IPublisher e chamando os métodos de extensão apropriados no AddConfigurationservice:
services . AddConfigurationService ( )
. AddProvider ( new CustomStorageProvider ( ) )
. AddPublisher ( new CustomPublisher ( ) ) ; O cliente de serviço de configuração pode ser configurado adicionando AddRemoteConfiguration ao construtor de configurações padrão. No exemplo a seguir, a configuração JSON remota é adicionada e um endpoint Redis é especificado para a assinatura de alteração de configuração. A configuração local pode ser lida para configurações para a fonte remota usando várias instâncias do construtor de configurações.
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 ( ) ; | Propriedade | Descrição |
|---|---|
| Serviceuri | Terminal de serviço de configuração. |
| HttpMessageHandler | O HttpMessageHandler opcional para o HttpClient . |
| Requesttimeout | O tempo limite da solicitação HttpClient para o servidor de configuração. Padrões para 60 segundos. |
| LoggerFactory | O tipo usado para configurar o sistema de registro e criar instâncias de ILogger . Padrões para NullLoggerFactory . |
| AddConfiguration | Adiciona um arquivo de configuração individual. |
| ConfigurationName | Caminho ou nome do arquivo de configuração em relação ao provedor de configuração. Este valor deve corresponder ao valor especificado na lista retornada pelo configuration/ endpoint. |
| Opcional | Determina se o carregamento do arquivo é opcional. |
| ReloadoChange | Determina se a fonte será carregada se o arquivo subjacente for alterado. |
| Analisador | O tipo usado para analisar o arquivo de configuração remota. O cliente tentará resolver isso a partir da extensão do arquivo do ConfigurationName , se não for especificado.Tipos suportados:
|
| Addredissubscripter | Adiciona redis como o assinante de configuração. |
| AddNatsSubscripter | Adiciona NATS como o assinante de configuração. |
| Addrabbitmqsubscript | Adiciona RabbitMQ como o assinante de configuração. |
| AddSubscripter | Adiciona um assinante de configuração personalizado O IMPLEMENTO ISubscriber . |
| AddLoggerFactory | Adiciona o tipo usado para configurar o sistema de registro e criar instâncias de ILogger . |
Amostras de implementações de host e cliente podem ser visualizadas em amostras.