Como usar o padrão de opções no ASP.NET Core

Compartilhe:

Share on twitter
Share on facebook
Share on linkedin
Share on whatsapp

O ASP.NET é uma estrutura popular de desenvolvimento da Web para a construção de aplicativos da Web na plataforma .NET. É a versão de código aberto do ASP.NET, que roda no macOS, Linux e Windows. O ASP.NET Core foi lançado pela primeira vez em 2016 e é um redesenho de versões anteriores do ASP.NET apenas para Windows.

Projetado para permitir que componentes de tempo de execução, APIs, compiladores e linguagens evoluam rapidamente, várias versões do ASP.NET Core podem existir lado a lado no mesmo servidor.

Aproveite as vantagens do padrão de opções para carregar dados de configuração diretamente em suas classes em tempo de execução para gerenciamento de dados de configuração simples e flexível.

Conheça mais sobre a tecnologia ao ler este post!

Como funciona o ASP.NET Core

Ao trabalhar no ASP.NET Core você geralmente especifica as configurações do aplicativo, faz o armazenamento em algum arquivo e, em seguida, recupera essas configurações quando o aplicativo precisar delas.

Normalmente, você registraria suas dependências no método ConfigureServices da classe Startup. Você pode especificar as configurações do seu aplicativo no appsettings.json ou algum outro arquivo .json e, em seguida, aproveitar a injeção de dependência por meio de IOptions para lê-las na sua aplicação.

Os padrões de opções fornecem uma maneira elegante de adicionar configurações fortemente tipadas ao seu aplicativo ASP.NET Core. O padrão de opções, que é uma extensão da interface IServiceCollection, aproveita as classes para representar um grupo de configurações relacionadas.

Como criar um projeto de API ASP.NET Core

Para trabalhar com os exemplos de código fornecidos neste post você deve ter o Visual Studio 2019 instalado em seu sistema. Se você ainda não tem uma cópia, pode baixar o Visual Studio 2019.

Primeiro, vamos criar um projeto ASP.NET Core no Visual Studio. Supondo que o Visual Studio 2019 esteja instalado em seu sistema, siga as etapas descritas abaixo para criar um novo projeto de API ASP.NET Core no Visual Studio.

  1. Inicie o Visual Studio.
  2. Clique em “Criar novo projeto”.
  3. Na janela “Criar novo projeto”, selecione “ASP.NET Core Web Application” na lista de modelos exibida.
  4. Clique em Avançar.
  5. Na janela “Configure your new project” mostrada a seguir, especifique o nome e o local para o novo projeto.
  6. Clique em Criar.
  7. Na janela “Criar Novo Aplicativo da Web ASP.NET Core”, selecione .NET Core como o tempo de execução e ASP.NET Core 3.0 (ou posterior) na lista suspensa no topo. Usaremos o ASP.NET Core 3.1 aqui.
  8. Selecione “API” como o modelo de projeto para criar um novo aplicativo ASP.NET Core API.
  9. Certifique-se de que as caixas de seleção “Habilitar suporte Docker” e “Configurar para HTTPS” estejam desmarcadas, pois esses recursos não serão usados.
  10. Certifique-se de que a autenticação esteja definida como “Sem autenticação”, pois também não será usada.
  11. Clique em Criar.

Isso criará um novo projeto ASP.NET Core API no Visual Studio. Selecione a pasta de solução de controladores na janela do Solution Explorer e clique em “Add -> Controller…” para criar um novo controlador chamado DefaultController.

Usaremos este projeto abaixo.

Como implementar o padrão de opções no ASP.NET Core

Para usar o padrão de opções no ASP.NET Core você precisa do pacote Microsoft.Extensions.Options.ConfigurationExtensions. A propósito, os aplicativos ASP.NET Core referenciam implicitamente ao pacote Microsoft.Extensions.Options.ConfigurationExtensions por padrão.

Ao usar o padrão de opções, você normalmente deseja usar classes para representar um grupo de configurações relacionadas. Ao isolar as definições de configuração em classes separadas, seu aplicativo segue os seguintes princípios:

  • Separação de interesses: As configurações usadas em diferentes módulos do aplicativo são separadas umas das outras.
  • Princípio de segregação de interface: as classes que representam essas configurações dependem apenas das configurações que eles usariam.

Agora escreva as seguintes configurações no arquivo appsettings.json.

“DatabaseSettings” : { “Server” : “localhost” , “Provider” : “SQL Server” , “Database” : “DemoDb” , “Port” : 23 , “UserName” : “sa” , “Password” : “Joydip123 ” }

Observe que sua classe de configuração deve ter propriedades públicas get e set. Leremos essas configurações em breve.

public class DatabaseSettings { public string Server { get ; definir ; } provedor de string público { get ; definir ; } banco de dados de string pública { get ; definir ; } public int Port { get ; definir ; } public string UserName { get ; definir ; } string pública

Agora você pode usar o método Configurar extensão de IServiceCollection para vincular sua classe de configurações à sua configuração, conforme mostrado no trecho de código fornecido abaixo.

public class DatabaseSettings { public string Server { get ; public void ConfigureServices ( IServiceCollection services ) {    services . AddControllers ();    serviços . Configure < DatabaseSettings > ( options => Configuration . GetSection ( “DatabaseSettings” ). Bind ( options )); }

Como ler os dados de configuração no controlador no ASP.NET Core

Vamos agora aproveitar o DefaultController criado anteriormente para demonstrar como ler os dados de configuração no controlador. A interface IOptions expõe uma propriedade Value que pode ser usada para recuperar a instância da classe de configurações.

O trecho de código a seguir mostra como você pode usar a classe DatabaseSettings em seu controlador chamado DefaultController. Observe como a injeção de dependência (injeção de construtor neste exemplo) foi usada aqui.

classe pública DefaultController : ControllerBase { private DatabaseSettings _settings ; public DefaultController ( IOptions < DatabaseSettings > configurações ) {    _settings = configurações . Valor ; } // Métodos de ação }

Como aplicar regras para configurações no ASP.NET Core

Você também pode aplicar certas regras conforme mostrado no trecho de código abaixo. Observe como uma instância da classe auxiliar para SQL Server ou MySQL é adicionada como um singleton aqui.

serviços . Configure < DatabaseSettings > ( options => { if ( options . Provider . ToLower (). Trim (). Equals ( “sqlserver” )) {      services . AddSingleton ( new SqlDbHelper ()); } else if ( options . Provider . ToLower (). Trim (). Equals ( “mysql” )) {

O suporte para configuração fortemente tipada é um ótimo recurso no ASP.NET Core que permite que você aplique a separação de interesses e os princípios de segregação de interface.

Gostou do post? Então continue lendo o Trends para conhecer mais assuntos técnicos!

Posts relacionados