Para poder desenvolvermos aplicativos precisamos configurá-lo, e nesse post aprenderemos sobre os métodos de configuração na classe Startup, como registrar serviços e como usar métodos de extensão nesse processo. Para iniciarmos, precisamos criar um novo projeto.
Criando um novo projeto
Vamos abrir o Visual Studio e criar um novo projeto ASP.NET Core Web Application:
Vamos agora escolher um nome para a aplicação:
Em seguida, vamos escolher o framework .NET 5.0 e clicar no botão Create:
Configurando LaunchSettings.json
Precisamos agora modificar o arquivo launchSettings.json para alterar o modo de inicialização do projeto, setando a propriedade launchBrowser para false para que o browser não seja iniciado quando o aplicativo rodar.
Nessa etapa não precisaremos de um navegador.
Sobre program.cs and startup.cs
O arquivo Program.cs é a entrada do nosso sistema.
A classe Startup é obrigatória em projetos ASP.NET Core Web API, e nela configuramos os serviços integrados usados pelo aplicação.
Quando abrimos a classe Startup, podemos encontrar o construtor e os dois métodos que iremos estender algumas vezes durante o desenvolvimento de nosso aplicativo.
O método ConfigureServices é usado para configurar serviços, que nada mais é do que um código que adiciona alguma funcionalidade à nossa aplicação.
No método Configure, vamos adicionar componentes de middleware, que podem adicionar complexidade ao código e troná-lo ilegível, e para evitarmos isso podemos usar métodos de extensão.
Métodos de extensão e Configuração CORS
Um método de extensão deve ser definido dentro de uma classe estática e estende o comportamento de um tipo em .NET, podendo ser reutilizado quantas vezes for necessário.
Vamos criar uma nova pasta Extensao no projeto e criar uma nova classe chamada ServiceExtensions. A classe ServiceExtensions deve ser estática.
Usando método de extensão, vamos configurar o CORS (Cross-Origin Resource Sharing), que é um mecanismo para permitir algumas solicitações de origem cruzada (domínio) e rejeitar outras.
Vamos agora adicionar um código que permite que todas as solicitações de todas as origens sejam enviadas para nossa API:
Em vez do método AllowAnyOrigin() que permite solicitações de qualquer fonte, podemos usar o WithOrigins (“https://example.com”) que permitirá solicitações apenas daquela origem. Outro ponto é que em vez de AllowAnyMethod() (que permite todos os métodos HTTP), podemos usar WithMethods (“POST”, “GET”), que permite o uso apenas desses. Podemos também configurar o método AllowAnyHeader() usando o método WithHeaders para permitir cabeçalhos específicos.
Configurando o IIS
Os aplicativos ASP.NET Core não precisam exclusivamente do IIS para serem executados, mas se quisermos hospedar nosso aplicativo no IIS precisamos adicionar o seguinte código à classe ServiceExtensions:
Vamos voltar para nossa classe de inicialização(startup) e modificar os métodos ConfigureServices e Configure para dar suporte à CORS e IIS, usando os métodos de extensão que criamos mais acima para essas funcionalidades:
Configurando ambientes
Enquanto desenvolvemos nosso aplicativo, usamos o ambiente de “desenvolvimento”, porém ele vai para o ambiente de “produção” em algum momento e esses ambientes possuem particularidades específicas.
Portanto, precisamos ter uma configuração separada para cada ambiente e isso é fácil de realizar usando os mecanismos fornecidos pelo .NET Core.
Assim que criarmos um projeto, veremos o arquivo appsettings.json na raiz, que é nosso principal arquivo de configurações, e quando o expandirmos veremos o arquivo appsetings.Development.json por padrão.
Os arquivos appsettings.{ambiente}.json são usados para substituir o arquivo appsettings.json principal. Para o ambiente de produção, devemos adicionar outro arquivo: appsettings.Production.json
Para definir em qual ambiente nosso aplicativo será executado, precisamos configurar a variável de ambiente ASPNETCORE_ENVIRONMENT. Por exemplo, para executar o aplicativo em produção, precisamos defini-lo com o valor Production na máquina em que será ‘deployado’, e podemos realizar essa definição através do comando (via CMD) set ASPNETCORE_ENVIRONMENT = Production
Os aplicativos ASP.NET Core usam o valor dessa variável de ambiente para decidir qual arquivo appsettings usar, e nesse caso será appsettings.Production.json.
Se dermos uma olhada em nosso arquivo launchSettings.json, veremos que essa variável está atualmente definida como Desenvolvimento.
Em um próximo post irei abordar Log em aplicações .NET. Até lá !