.NET 응용 프로그램 구성 및 작업으로 사용됩니다.

Ter os conhecimentos nas configurações e opções é um conceitofundamental para as aplicações, exceto os aplicativos básicos.

발표자에게 주어진 주제


  • JSON
  • 에 대한 구성 및 정의 정의 사용
  • 런타임 구성에 액세스합니다(실행 시간).
  • Entender sobre o padrão de opções que o .NET utility.
  • Utilizar outros proofores de configuração, mantendo os segredos e chaves confidenciais seguras.

  • 클래스 구성이 필요합니까?


  • Prover configurações iniciais para sua aplicação.
  • Ao mudar seus valores a aplicação não precisa ser recompilada.
  • Pode ser definidas de várias origens diferentes.
  • Acessamos em runtime, e podemos controlar o comportamento da aplicação.

  • A classe Configuration ficam disponíveis através desse package: "Microsoft.Extensions.Configuration"



    A estrutura de uma configuração é um dicionário com chave/valor, onde a chave semper sera uma string, e valor um dado string ou um dicionário. 예를 들면 다음과 같습니다.

    {
      "Secao1": {
        "ChaveA": "Valor da chave A",
        "ChaveB": "Valor da chave B"
      },
      "Secao2": {
        "SubSecao": {
          "ChaveA": "Valor da subsecção chave A"
        }
      }  
    }
    


    Para recuperar os valores podemos utilizar o padrão dessa maneira.
  • 차베: "Secao1:ChaveA"
  • 출력: "Valor da chave A""

  • 차베: "Secao2:SubSecao:ChaveA"
  • 출력: "Valor da subsecção chave A"


  • Definindo as opções na prática, após criar um projeto .Net Web, vamos até o arquivo "appsettings.json"



    Observação: Percebe que temos dois arquivos appsettings, um ".json" e outro ".Development.json" eles seguem o padrão de carregamento que, caso seja informado algum valor na variável de lançamento ASPNETCORE_ENVIRONMENT, ele tentará ler o appsettings dessa variável e dará preferencia na busca, caso não consiga ira utilizar o "padrão", "appsettings.json".



    Definiremos alguns valores de configuração dentro de um arquivo JSON, que será carregado quando nosso aplicativo for iniciado. Criei um controller, e fiz a injecção de interface da interface IConfiguration através do constructor, com ela temos o metodo GetValue, e através dele recuperei o valor da nossa mensagem.



    Observação: Alterar os valores do "appsettings.json", não gera a necessidade de recompilar a aplicação.



    GetSection 방법을 활용하고 GetValue를 혁신적으로 활용하는 방법:



    Vamos implementar algo um pouco mais complexo, nosso "feature flag"de demonstração, adicionei as seguinte opções na nossa configuração:

    {
      // ...código omitido
      "Features" : {
        "HelloWorldService": {
          "EnableService": false,
          "Messages": {
            "Default": "Hello World :)",
            "Disable": "Sorry, but I'm disabled ;("
          }
        }
      }
    }
    


    Criei uma interface para o serviço e duas implementação dessa 인터페이스:

    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");
    }
    


    Program.cs에 대한 해결책 정의:

    // ...codigo omitido
    if (builder.Configuration.GetValue<bool>("Features:HelloWorldService:EnableService"))
    {
        builder.Services.TryAddSingleton<IHelloWorldService, HelloWorldService>();
    }
    else
    {
        builder.Services.TryAddSingleton<IHelloWorldService, DisableHelloWorldService>();
    }
    


    참조 및 학점:


  • Créditos da capa: https://unsplash.com/photos/KTpSVEcU0XU?utm_source=unsplash&utm_medium=referral&utm_content=creditShareLink
  • 좋은 웹페이지 즐겨찾기