Your Web News in One Place

Help Webnuz

Referal links:

Sign up for GreenGeeks web hosting
April 11, 2022 11:00 pm GMT

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"

Local do 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.

Dois arquivo divididos, no lado esquerdo "AppSettingsController.cs" e no direito, "appsettings.json" e o navegador apresentando que a operao deu certo

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:

Dois arquivo divididos, no lado esquerdo "AppSettingsController.cs" e no direito, "appsettings.json" e o navegador apresentando que a operao deu certo

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

Share this article:    Share on Facebook
View Full Article

Dev To

An online community for sharing and discovering great ideas, having debates, and making friends

More About this Source Visit Dev To