.NET 6 + ASP.NET Core: novidades nos templates de projetos
Já abordei o suporte a Minimal APIs em projetos Web baseados no .NET 6 nos seguintes artigos:
Novidades do .NET 6: Minimal APIs em ASP.NET Core
Novidades do .NET 6: suporte a Swagger em Minimal APIs
E com o Preview 7 do .NET 6 tivemos uma grande novidade relacionada a Minimal APIs: projetos ASP.NET Core a partir deste release serão gerados com base neste novo tipo de implementação, incorporando inclusive funcionalidades do C# 10.
Considerando a criação de projetos Web API com a instrução:
dotnet new webapi -n TestesWebApi
Um projeto em .NET 5 terá os arquivos Program.cs e Startup.cs em sua estrutura:
Já com o .NET 6 Preview 7 teremos apenas o arquivo Program.cs:
O código gerado para a classe Program em .NET 5 foi:
E para o tipo Startup:
Já no .NET 6 o conteúdo do arquivo Program.cs contemplará tudo o que anteriormente era definido nas classes Program e Startup:
Analisando este código é possível observar:
- A implementação em Program.cs fez uso da funcionalidade conhecida como Top Level Program (introduzida com o C# 9), dispensando inclusive a declaração da classe Program e de seu método Main;
- Usings referenciando namespaces contendo recursos básicos como Microsoft.AspNetCore.Builder não foram incluídos no código. Esta novidade é chamada de Implicit Using Statements;
- Um novo modelo para hosting de aplicações é acionado através de uma chamada a WebApplication.CreateBuilder (linha 3).
E as mudanças não param por aqui…
Na próxima listagem temos o arquivo .csproj para a aplicação criada com o .NET 5:
Já no arquivo .csproj da aplicação baseada no .NET 5 Preview 7 notaremos que foi ativada a utilização de Null Reference Types:
Na próxima listagem está o código gerado para a classe WeatherForecast no projeto criado com .NET 5:
Com a versão equivalente para .NET 6 será possível notar algumas diferenças:
- A propriedade do tipo string Summary foi marcada como um Nullable (?);
- Foi desnecessário declarar o namespace System devido ao uso de Implicit Using Statements;
- Chaves foram retiradas da declaração do namespace TestesWebApi, reduzindo ainda mais o código. Este é um exemplo de utilização de uma nova funcionalidade do C# 10 chamada File-scoped namespaces.
Na listagem a seguir está a implementação da classe WeatherForecastController gerada em .NET 5:
A nova versão para este Controller no .NET 6 Preview 7 fará uso de Implicit Using Statements e File-scoped namespaces:
Nos links a seguir estão outros 2 exemplos de projetos Web API baseados em ASP.NET Core e no Preview 7 do .NET 6:
https://github.com/renatogroffe/ASPNETCore6-Preview7-REST_API-ContagemAcessos
https://github.com/renatogroffe/ASPNETCore6-Preview7-Global_Usings-REST_API-ConversoesMedidas
Outros templates como Razor Pages e MVC também passaram por mudanças similares.
Aproveito esse espaço para um convite…
Dia 27/09 (segunda) às 21:00 — horário de Brasília — teremos mais um evento online e gratuito no canal Canal .NET.
Ao longo desta live abordarei dicas, truques e alternativas úteis para o desenvolvimento Back-End e de APIs REST com .NET 5, ASP.NET Core, Azure Functions. Ao longo da apresentação será coberto o uso de diferentes frameworks, serviços na nuvem, mensageria, bancos de dados e boas práticas de forma a facilitar e tornar mais dinâmica a implementação de soluções baseadas na plataforma .NET no seu dia a dia.
Teremos também algumas novidades do .NET 6 demonstradas na prática!
Para participar faça sua inscrição no link a seguir, a transmissão acontecerá via YouTube:
Referências
ASP.NET Core updates in .NET 6 Preview 7 | ASP.NET Blog
.NET 6 - Guia de Referência: artigos, vídeos e exemplos de utilização
C# 10 - Guia de Referência: artigos, dicas e exemplos de utilização
Novidades do .NET 6: Minimal APIs em ASP.NET Core
Novidades do .NET 6: suporte a Swagger em Minimal APIs