An Interest In:
Web News this Week
- April 27, 2024
- April 26, 2024
- April 25, 2024
- April 24, 2024
- April 23, 2024
- April 22, 2024
- April 21, 2024
Como utilizar as configuraes e opes de um aplicao .NET .
Ter os conhecimentos nas configuraes e opes um conceito fundamental para as aplicaes, exceto os aplicativos bsicos.
Os tpicos que sero apresentados
- Usar a configurao e como defini-la com arquivos JSON
- Acessar a configurao em runtime (tempo de execuo).
- Entender sobre o padro de opes que o .NET utiliza.
- Utilizar outros provedores de configurao, mantendo os segredos e chaves confidenciais seguras.
O que a classe Configuration?
- Prover configuraes iniciais para sua aplicao.
- Ao mudar seus valores a aplicao no precisa ser recompilada.
- Pode ser definidas de vrias origens diferentes.
- Acessamos em runtime, e podemos controlar o comportamento da aplicao.
A classe Configuration ficam disponveis atravs desse package: "Microsoft.Extensions.Configuration"
A estrutura de uma configurao um dicionrio com chave/valor, onde a chave sempre sera uma string, e valor um dado string ou um dicionrio. Segue o exemplo:
{ "Secao1": { "ChaveA": "Valor da chave A", "ChaveB": "Valor da chave B" }, "Secao2": { "SubSecao": { "ChaveA": "Valor da subseco chave A" } } }
Para recuperar os valores podemos utilizar o padro dessa maneira.
- Chave: "Secao1:ChaveA"
- Output: "Valor da chave A""
- Chave: "Secao2:SubSecao:ChaveA"
- Output: "Valor da subseco chave A"
Definindo as opes na prtica, aps criar um projeto .Net Web, vamos at o arquivo "appsettings.json"
Observao: Percebe que temos dois arquivos appsettings, um ".json" e outro ".Development.json" eles seguem o padro de carregamento que, caso seja informado algum valor na varivel de lanamento ASPNETCORE_ENVIRONMENT, ele tentar ler o appsettings dessa varivel e dar preferencia na busca, caso no consiga ira utilizar o "padro", "appsettings.json".
Definiremos alguns valores de configurao dentro de um arquivo JSON, que ser carregado quando nosso aplicativo for iniciado. Criei um controller, e fiz a injeco de dependencia da interface IConfiguration atravs do constructor, com ela temos o mtodo GetValue, e atravs dele recuperei o valor da nossa mensagem.
Observao: Alterar os valores do "appsettings.json", no gera a necessidade de recompilar a aplicao.
Utilizando o mtodo GetSection e pegando o valor de um campo utilizando novamente o GetValue:
Vamos implementar algo um pouco mais complexo, nosso "feature flag" de demonstrao, adicionei as seguinte opes na nossa configurao:
{ // ...cdigo omitido "Features" : { "HelloWorldService": { "EnableService": false, "Messages": { "Default": "Hello World :)", "Disable": "Sorry, but I'm disabled ;(" } } }}
Criei uma interface para o servio e duas implementao dessa interface:
public interface IHelloWorldService{ string SayHello();}public class HelloWorldService : IHelloWorldService{ private readonly IConfiguration _configuration; public HelloWorldService(IConfiguration configuration) { _configuration = configuration; } public string SayHello() => _configuration.GetValue<string>("Features:HelloWorldService:Messages:Default");}public class DisableHelloWorldService : IHelloWorldService{ private readonly IConfiguration _configuration; public DisableHelloWorldService(IConfiguration configuration) { _configuration = configuration; } public string SayHello() => _configuration.GetValue<string>("Features:HelloWorldService:Messages:Disable");}
Defini a resoluo desse servio na Program.cs:
// ...codigo omitidoif (builder.Configuration.GetValue<bool>("Features:HelloWorldService:EnableService")){ builder.Services.TryAddSingleton<IHelloWorldService, HelloWorldService>();}else{ builder.Services.TryAddSingleton<IHelloWorldService, DisableHelloWorldService>();}
Referencias e crditos:
Original Link: https://dev.to/paulowalravendev/como-utilizar-as-configuracoes-e-opcoes-de-um-aplicacao-net--5edh
Dev To
An online community for sharing and discovering great ideas, having debates, and making friendsMore About this Source Visit Dev To