Detalhes do ASP.NET Core
Neste artigo será exibido em detalhes a estrutura do ASP.NET Core, o que significa cada um dos arquivos de configuração e suas features.
O que é?
O ASP.NET Core é um framework de desenvolvimento Web da Microsoft que combina a eficácia e organização da arquitetura MVC com as ideias do desenvolvimento ágile e as melhores partes do .NET Framework core.
Para saber mais sobre a história do ASP.NET Core, os motivos por trás da reescrita do Framework, veja este post: História do ASP.NET Core
A Configuração básica
Ao criar um novo projeto Empty do ASP.NET Core.
É criado a seguinte estrutura básica
Arquivo | Descrição |
---|---|
Program.cs e startup.cs | As classes Program e Startup são usados para configurar o comportamento da aplicação ASP.NET Core |
EntendendoBasico.csproj | O Arquivo EntendendoBasico contém os pacotes e referências do projeto. Aqui são indicados os pacotes NuGet. Na figura ele é quem representa o projeto. |
O componente mais importante é o Startup.cs. É usado para criar serviços que fornecem funcionalidades comum ao app e também componentes de Middleware.
Componentes Middleware são utilizados para manipular as solicitações HTTP.
<nome-do-projeto>.csproj
O principal arquivo de configuração do projeto. A partir do .Net Core 2.0 ele substituiu o project.json.
Para acessar seu conteúdo pressione o botão direito em cima e selecione a opção Edit <nome-do-projeto>.csproj file
Principais elementos csproj
Elemento | Descrição |
---|---|
Project | Este é o elemento root. Por causa desta tag o MSBuild identifica que este é um arquivo de configuração. O conteúdo do atributo Sdk Microsoft.NET.Sdk.Web indica uma série de importações implícitas necessárias para compilar o projeto. |
PropertyGroup | Este elemento agrupa as propriedades das configurações do projeto. |
TargetFramework | Indica qual versão do framework necessária para compilar o projeto. |
ItemGroup | Agrupa configurações correlacionadas. |
Folder | Informa ao MSBuild como lidar com uma pasta no projeto. |
PackageReference | Usado para especificar uma dependência do NuGet. Os atributos Include e Version contém, respectivamente, o nome identificador e a versão do Pacote. |
DotNetCliToolReference | Utilizado para adicionar referências que provê comandos adicionais ao cli (Command Line). O Visual Studio irá baixar e configurar os pacotes. Também os usará para configurar o cli do dotnet. |
Program.cs
É através da classe Program que o dotnet inicia a aplicação. Ela é o que chamamos de entry point. Por padrão o método Main é chamado. Através do Main que é configurado o ambiente. O conteúdo default da Program é suficiente para configurar a maioria dos projetos.
O método Main chama o método BuildWebHost, responsável pela configuração do ASP.NET Core. O BuildWebHost utiliza extension methods para configurar o app Web.
No ASP.NET Core 2, a configuração foi razoavelmente simplificada através do método CreateDefaultBuilder. Ele utiliza configurações que atendem a maioria dos projetos.
O método UseStartup é chamado para identificar a classe que fornecerá as configurações específicas do app. A convenção é usar uma classe chamada Startup. O método Build processa todas as configurações e cria um objeto que implementa a interface IWebHost. O método Main chama Run para iniciar.
Método CreateDefaultBuilder
Este é um extension method que encapsula uma série de configurações default e interessantes sobre o ASP.NET Core. Novamente, esse extension method contém configurações que resolve a grande maioria dos projetos.
Abaixo veja como ficaria a configuração substituindo seu conteúdo.
A seguir detalhes do que significa cada método.
Método | Descrição |
---|---|
UseKestrel | Configura o Kestrel Web Server |
UseContentRoot | Configura a pasta raiz para a aplicação. É a partir deste local que será carregado os arquivos de configuração, bem como os arquivos estáticos. |
ConfigureAppConfiguration | Utilizado para adicionar arquivos de configuração ao projeto. |
AddUserSecrets | Utilizado para guardar dados sensíveis |
ConfigureLogging | Este método configura o sistema de log |
UseIISIntegration | Indica a utilização do IIS e IIS Express |
UseDefaultServiceProvider | Configura o DI padrão do .NET Core |
UseStartup | Arquivo de configuração que será utilizado pelo WebApp |
Kestrel
Kestrel é um servidor web Multi-plataforma. Projetado especialmente para executar apps ASP.NET Core. Ele é utilizado por default quando é usado o IIS ou IIS Express. É possível rodar o Kestrel diretamente através do comando
dotnet run
Isso significa que é desnecessário a dependência do IIS. Por isso o ASP.NET Core consegue ser multiplataforma. (LINDO)
O Kestrel pode ser hospedado no IIS, Nginx, Apache, Docker ou self-host.
Startup.cs
A classe Startup possui dois métodos, ConfigureServices e Configure. Estes métodos configuram o Web app e definem como eles devem ser usados.
Quando o aplicativo é iniciado, o ASP.NET Core cria uma nova instância da classe Startup e chama primeiramente o método ConfigureServices. Permitindo o aplicativo criar seus serviços. Depois que os serviços foram criados, o método Configure é chamado. O objetivo do método Configure é configurar o pipeline de solicitações do ASP.NET Core, nada mais que um conjunto de middleware para manipular solicitações HTTP.
ASP.NET Services é qualquer objeto que modifique o app fornecendo funcionalidades para outras partes da aplicação.
pipeline do ASP.NET Core
Ao usar o dotnet run
ou iniciar a aplicação o seguinte pipeline ocorre
Fim!
Espero que tenham gostado e que te ajude a entender mais o ASP.NET Core!
Deixe seu comentário, críticas ou sugestões e vamos bater um papo!
Referências
- Managing Secrets in .NET CORE 2.0 Apps
- Introduction to ASP.NET Core
- ESPOSITO, Dino. Programming ASP.NET Core. 1 Edição.
- FREEMAN, Adam. Pro ASP.NET Core MVC 2. 7 Edição.