No mundo do desenvolvimento de software, é crucial manter a consistência em diferentes ambientes (desenvolvimento, preparação, produção) ou em vários projetos dentro da mesma solução. O ASP.NET Core oferece um sistema de configuração robusto, flexível e poderoso, permitindo que as configurações sejam originadas de arquivos JSON, variáveis de ambiente, argumentos de linha de comando e muito mais. Uma prática comum para obter consistência é o uso de configurações compartilhadas. Este artigo orientará você na configuração e no uso de configurações compartilhadas no ASP.NET Core.
Etapa 1: Criando um arquivo de configuração compartilhado
Uma configuração compartilhada normalmente reside em um arquivo JSON. Este arquivo contém todas as configurações que precisam ser consistentes em diferentes partes de um aplicativo ou em vários aplicativos. Por exemplo, crie um arquivo chamado appsettings.Shared.json
com o seguinte conteúdo:
{
"Logging" : {
"LogLevel" : {
"Padrão" : "Informações" ,
"Microsoft" : "Aviso"
}
} ,
"Configurações do aplicativo" : {
"ApplicationName" : "Meu aplicativo" ,
"Versão" : "1.0.0"
}
}
Etapa 2: Carregando o arquivo de configuração compartilhada
O arquivo de configuração compartilhado deve ser carregado para que suas configurações possam ser utilizadas pela sua aplicação. Isto é feito no CreateHostBuilder
método dentro do Program.cs
arquivo. É crucial carregar a configuração compartilhada junto com as configurações específicas do ambiente, garantindo que as configurações específicas do ambiente possam substituir as compartilhadas, se necessário:
public static IHostBuilder CreateHostBuilder(string[] args) =>
Hospedar . CreateDefaultBuilder ( args )
. ConfigureAppConfiguration ( ( hostContext , config ) =>
{
var env = hospedagemContext . Ambiente de hospedagem ;
// Carregue primeiro a configuração compartilhada.
configuração . AddJsonFile ( "appsettings.Shared.json" , opcional : true , reloadOnChange : true ) ;
// Carregue as configurações específicas do ambiente a seguir.
configuração . AddJsonFile ( $"appsettings. { env . EnvironmentName } .json" , opcional : true , reloadOnChange : true ) ;
} )
. ConfigurarWebHostDefaults ( webBuilder =>
{
webBuilder . UseStartup < Inicialização > ( ) ;
} ) ;
Etapa 3: Acessando Valores de Configuração
Para utilizar os valores de configuração em seu aplicativo, você pode injetar diretamente IConfiguration
em suas aulas ou use o padrão de opções para configurações mais estruturadas.
Injetando diretamente IConfiguration
:
Veja como você pode injetar IConfiguration
para acessar o ApplicationName
contexto:
public class MyController : ControllerBase
{
private readonly IConfiguration _configuration;
MyController público ( configuração IConfiguration )
{
_configuração = configuração ;
}
público IActionResult GetAppName ( )
{
var appName = _configuração . GetValue <string> ( " ApplicationSettings :ApplicationName" ) ;
return Ok ( appName ) ;
}
}
Usando o padrão de opções:
Para configurações complexas, o padrão de opções é recomendado. Primeiro, defina uma classe que represente suas configurações:
public class ApplicationSettings
{
string pública ApplicationName { get ; definir ; }
string pública Versão { get ; definir ; }
}
Cadastre-o no ConfigureServices
método do seu Startup
aula:
public void ConfigureServices(IServiceCollection services)
{
Serviços . Configurar <ApplicationSettings> ( Configuração.GetSection ( " ApplicationSettings " ) ) ;
//Adiciona outros serviços
}
Injetar IOptions<ApplicationSettings>
para acessar as configurações em suas aulas:
public class MyOtherController : ControllerBase
{
private somente leitura ApplicationSettings _appSettings ;
public MyOtherController ( IOptions < ApplicationSettings > appSettings )
{
_appSettings = appSettings . Valor ;
}
público IActionResult GetAppVersion ( )
{
return Ok ( _appSettings.Versão ) ;
}
}
Conclusão
O uso de configurações compartilhadas no ASP.NET Core não apenas ajuda a manter a consistência em diferentes ambientes e projetos, mas também torna o gerenciamento de configuração mais limpo e fácil de manter. Ao aproveitar a flexibilidade do sistema de configuração do ASP.NET Core, os desenvolvedores podem simplificar seus processos de desenvolvimento, reduzir erros e garantir que seus aplicativos se comportem de forma consistente, independentemente do ambiente ou projeto em que estão implantados.