SlideShare uma empresa Scribd logo
.NET 6 Uma nova forma de
construir Apis
Júnior Porfirio
Arquiteto Software - CI&T
COMPILERS LANGUAGES
RUNTIME COMPONENTS
COMMON BASE LIBARIES/APIs
INFRASTRUCTURE
.NET 6
TOOLS
Visual Studio Code
CLI
Visual Studio
Visual Studio for Mac
WEB MOBILE GAMING IoT AI
ASP.NET
Blazor
.NET MAUI
Xamarin
Unity ARM32
ARM64
ML.NET
.NET for
Apache Spark
DESKTOP
.NET MAUI
WPF
WinForms
CLOUD
Azure
.NET – Plataforma unificada
ECOSYSTEM
NuGet
GitHub
Components,
tools, library
vendors
.NET 6
Sources: insights.stackoverflow.com/survey/2019#most-loved-dreaded-and-wanted;
insights.stackoverflow.com/survey/2020#most-loved-dreaded-and-wanted;
insights.stackoverflow.com/survey/2021#section-most-loved-dreaded-and-wanted-other-frameworks-and-libraries;
www.cncf.io/blog/2021/08/02/update-on-cncf-and-open-source-project-velocity-2020/
Highest velocity OSS project since 2017
github.com/dotnet
Most Loved Framework (2019, 20,
21)
.NET Core / .NET 5
.NET developers 
In Visual Studio family
5.4M #1 Top 30
.NET
>6.9K
Community
contributors
>21K
Community
contributions
.NET 6 Performance
https://www.techempower.com/benchmarks/#section=data-r20&hw=ph&test=plaintext
>10X faster than Node.js
ASP.NET Core web framework
https://www.techempower.com/benchmarks/#section=test&runid=3fc99e53-f60d-428e-9937-e809880d3da2&hw=ph&test=fortune&a=2&o=e
Sources
:
+92%
Entity Framework Core Performance
RELEASED
.NET 6
●Bibliotecas de base comum e SDK unificados
●Desempenho líder da indústria
●Desenvolvimento simplificado, mais fácil de começar
●Novo C# 10, F# 6 releases
●Apple Silicon (Arm64) support
●Long-Term Support Release
get.dot.net/6
Visual Studio 2022
Desenvolvimento Moderno
Crie aplicativos modernos e inovadores usando .NET 6, GitHub e
Azure com ferramentas integradas
Produtividade pessoal e para times
Live Share, Hot reload em todos lugares, Web live preview, IntelliCode,
ferramentas de teste e debugging melhoradas
Escale para projetos de qualquer tamanho
Uma UI moderna e otimizada numa arquitetura 64 bits para suportar os
maiores e mais complexos workflows e bases de código
VisualStudio.com/download
RELEASED
RELEASED
.NET Upgrade Assistant
●Reduza o tempo e a dificuldade de modernizar
bases de código .NET mais antigas
●Experiência guiada passo a passo
●Vários tipos de projeto suportados
●C# & VB.NET linguagens
●Suporta .NET 6
aka.ms/dotnet-upgrade-assistant
RELEASED
+40K
preview
downloads
Mais modelos, SDK unificado
Hot reload via dotnet watch
Suporte nativo para máquinas Arm64
Único arquivo EXEs para todas plataformas
.NET CLI
dotnet new <anything>
dotnet watch run
dotnet build –a arm64
Hot reload
Acelera seu desenvolvimento, chega de F5
Menos tempo reiniciando, mais tempo codificando
Disponível no CLI & Visual Studio 2022
Todos os tipos de projetos, e todas as versões .NET
4.6+
Melhor com .NET 6
Simplificando seu código C# 10
global using Model; // Global usings aplicado globalmente no projeto
// using System; // Implicit usings para vários tipos de projeto
namespace Model; // File-scope namespace, sem indentação
// Records podem ser structs ou classes
public record struct Order(Customer Customer, string Kind, int Items);
public record class Customer(string Name, string Address);
// Lambdas possuí tipos implícitos
var parse = (string s) => int.Parse(s); // Func<string, int>
APIs leves, de arquivo único e nativas da nuvem
Sem Cerimônias
Fácil para iniciar
Sem controllers
Ideal para aplicações em microservices / Faas
Minimal APIs
var app = WebApplication.Create(args);
 
app.MapGet("/", () => "Hello World!");
 
app.Run();
Mínimo código para mínimo apps
Sem Filters do MVC
Não tem suporte API Versioning.
Sem validações IModelValidator por padrão
Sem suporte a binding Forms IFormFile
Sem suporte a OData
Diferenças do Minimal APIs para MVC
var app = WebApplication.Create(args);
 
app.MapGet("/", () => "Hello World!");
 
app.Run();
Simples como deve ser !
Suporte a Data Annotations
Suporte a FluentValidation
MinimalApis.Validators
var app = WebApplication.Create(args);
 
app.MapGet("/customer", (Customer customer) =>
Results.Created("", customer)).WithValidator<Customer>();
 
app.Run();
record Customer(
[property:Required] string Name,
[property:Required] string Email
);
https://github.com/juniorporfirio/MinimalApis.Validators
Resolve esse problema nos testes unitários
Suporta todos os StatusCode
Versão preview
Fácil de implementar, ex: Results.Extensions.Ok(object)
Pacote do Damian Edwards
Agradecimento especial por resolver rápido Issues.
MinimalApis.Extensions
internal sealed class OkObjectResult : ObjectResult
{
public OkObjectResult(object? value)
: base(value, StatusCodes.Status200OK)
{
}
}
● https://github.com/dotnet/aspnetcore/blob/main/src/Http/Http.Results/src/OkObjectResult.cs
● https://github.com/DamianEdwards/MinimalApis.Extensions
Minimal APIs Simples
=
Demo –
Minimal APIs
Minimal APIs, C# 10
Referências
var app = WebApplication.Create(args);
 
app.MapGet("documentacao", () => "https://minimal-apis.github.io/");
app.MapGet("codigoprojeto", () => "https://github.com/juniorporfirio/DevPira21-NET6-MInimalAPIs");
app.Run();
Dúvidas?
Este é o momento
Obrigado
Até a próxima !

Mais conteúdo relacionado

PPTX
Uaijug ADF - spring boot - microservice - Introdução
PDF
.NET 6: O que há de novo e o que está por vir?
PDF
Desenvolvendo uma App multiplataforma compartilhando 90% do código
PDF
A importância de DDD e o Domain Model na construção de APIs!
PDF
Desenvolvimento Mobile Multiplataforma: Uma abordagem ágil e de alto desempen...
PPTX
Workshop react + adonis.js
PPTX
Xamarin + TDD - Reagindo rápido à mudanças no mundo mobile
PPT
Desvendando ASP.NET MVC
Uaijug ADF - spring boot - microservice - Introdução
.NET 6: O que há de novo e o que está por vir?
Desenvolvendo uma App multiplataforma compartilhando 90% do código
A importância de DDD e o Domain Model na construção de APIs!
Desenvolvimento Mobile Multiplataforma: Uma abordagem ágil e de alto desempen...
Workshop react + adonis.js
Xamarin + TDD - Reagindo rápido à mudanças no mundo mobile
Desvendando ASP.NET MVC

Mais procurados (20)

PDF
Javascript por debaixo dos panos
PDF
Linguagem c
PDF
.NET 6: O que há de novo e o que está por vir?
PPTX
Xamarin em 7 minutos
KEY
Programação Orientada a Testes
PDF
Devops CI/CD: Obtendo qualidade de vida para o time de desenvolvimento
PPTX
Unit Test JavaScript
PDF
Escalando apps com React e Type Script e SOLID
PDF
Testes com xUnit + Coding Dojo
PPTX
9 erros que desenvolvedores Node.js cometem
PDF
Aplicações e serviços Web interoperáveis com o padrão Cross-Origin Resource S...
PDF
Introdução ao Github actions - TDC Connections
PDF
Comparando as Hypes - React & Vue
PDF
TDC2016POA | Trilha .NET - O novo ASP.NET Core 1.0 multiplataforma
PDF
Usando Git na Unity - Gaming For All 2021
PPTX
Performance do ASP.NET Core, um comparativo com Node.js
PPTX
O novo Visual Studio 2012
PPTX
O Futuro do ASP.NET
PDF
ASP.NET Core com Linux, Docker e Azure
PDF
Machine Learning para devs com ML.NET
Javascript por debaixo dos panos
Linguagem c
.NET 6: O que há de novo e o que está por vir?
Xamarin em 7 minutos
Programação Orientada a Testes
Devops CI/CD: Obtendo qualidade de vida para o time de desenvolvimento
Unit Test JavaScript
Escalando apps com React e Type Script e SOLID
Testes com xUnit + Coding Dojo
9 erros que desenvolvedores Node.js cometem
Aplicações e serviços Web interoperáveis com o padrão Cross-Origin Resource S...
Introdução ao Github actions - TDC Connections
Comparando as Hypes - React & Vue
TDC2016POA | Trilha .NET - O novo ASP.NET Core 1.0 multiplataforma
Usando Git na Unity - Gaming For All 2021
Performance do ASP.NET Core, um comparativo com Node.js
O novo Visual Studio 2012
O Futuro do ASP.NET
ASP.NET Core com Linux, Docker e Azure
Machine Learning para devs com ML.NET
Anúncio

Semelhante a DevPira Festival 21 - .NET6 Uma nova forma de construir apis MinimalAPIs (20)

PPTX
.NET 2015, ASP.NET 5, C# 6 e tudo mais
PDF
TDC 2016 POA: O novo ASP.NET Core 1.0 multiplataforma
PDF
Cebraspe 2016: .NET Core e ASP.NET Core
PPTX
Evolução do .NET Framework e do Visual Basic
PDF
Um novo .NET multiplataforma: ASP.NET Core, .NET Core e Entity Framework Core
PDF
dotnetConf 2016 Goiânia: .NET Core | ASP.NET Core
PDF
Interoperabilidade com .NET em ambiente Mainframe
PPTX
1º FasS2B 2010
PPTX
Microsoft e Open Source: expandindo as fronteiras no Desenvolvimento de Softw...
PPTX
Microsoft e Open Source: expandindo as fronteiras no Desenvolvimento de Softw...
PPTX
ASP.NET vNext no .NET Architects Days 2014
PPT
O Futuro do ASP.NET (vNext)
PPS
Microsoft .NET Framework
PPTX
Linux, Docker, Open Source e Tecnologias Microsoft - Dezembro/2017
PPT
.NET Open Source
PPTX
DotNet Framework e Orientação a Objetos 1 - Introdução
PPTX
Construindo Aplicativos móveis conectados com Xamarin e Azure Mobile Services
PDF
Desenvolvimento de Aplicações com Visual Studio
PPTX
Introdução C#
PPTX
ASP.NET Core e Linux: Explorando novas fronteiras - Araras Dev - Julho/2017
.NET 2015, ASP.NET 5, C# 6 e tudo mais
TDC 2016 POA: O novo ASP.NET Core 1.0 multiplataforma
Cebraspe 2016: .NET Core e ASP.NET Core
Evolução do .NET Framework e do Visual Basic
Um novo .NET multiplataforma: ASP.NET Core, .NET Core e Entity Framework Core
dotnetConf 2016 Goiânia: .NET Core | ASP.NET Core
Interoperabilidade com .NET em ambiente Mainframe
1º FasS2B 2010
Microsoft e Open Source: expandindo as fronteiras no Desenvolvimento de Softw...
Microsoft e Open Source: expandindo as fronteiras no Desenvolvimento de Softw...
ASP.NET vNext no .NET Architects Days 2014
O Futuro do ASP.NET (vNext)
Microsoft .NET Framework
Linux, Docker, Open Source e Tecnologias Microsoft - Dezembro/2017
.NET Open Source
DotNet Framework e Orientação a Objetos 1 - Introdução
Construindo Aplicativos móveis conectados com Xamarin e Azure Mobile Services
Desenvolvimento de Aplicações com Visual Studio
Introdução C#
ASP.NET Core e Linux: Explorando novas fronteiras - Araras Dev - Julho/2017
Anúncio

Último (20)

PPTX
Func-equip-moagem-espe-prensa_PPT_003.pptx
PPT
Ergonomia Aula 01 conceitos básicos segurança
PPT
aula biologia do solo na agronomia introdução
PPTX
Caminho das Bromélias _Nível Obra - Governança em SSMA_03.2024.pptx
PDF
MIP Manejo integrado de pragas na cultura do algodão
PPTX
Integração SMS introdutorio 111111111111
PDF
1 - Fundamentos Básicos da Transferência de Calor.pdf
PDF
Material referente a introdução a instr.
PDF
Reacoes_expansivas_no_concreto_DEF_ABCP_dez2020.pdf
PPTX
Apresentação_Mecanismo_Garra_P2_18-06-2017.pptx
PDF
MIP - soja.- pragas da cultura e seu controle
PDF
Boas práticas em rebobinamento trifásico .pdf
PDF
Palestras_Tribologia_Profa_MCristinaMFarias.pdf
PPTX
Treinamento em powerpoint para integração de colaboradores em fábrica de pequ...
PPTX
Técnicas de montagem e desmontagens.pptx
PDF
Artigo sobre industria de petroleo em pdf
PPTX
1 Conceitos-de-Gestao-da-Qualidaade.pptx
PDF
ANTENA DIPOLO DOBRADO NOTA AULA 164 PROFESSOR ANGELO ANTONIO LEITHOLD.pdf
PPTX
Física I - 01 e 02 - Introdução ao método Científico.pptx
PPTX
Introducao a Olericultura I E CLASSIFICAÇÃO
Func-equip-moagem-espe-prensa_PPT_003.pptx
Ergonomia Aula 01 conceitos básicos segurança
aula biologia do solo na agronomia introdução
Caminho das Bromélias _Nível Obra - Governança em SSMA_03.2024.pptx
MIP Manejo integrado de pragas na cultura do algodão
Integração SMS introdutorio 111111111111
1 - Fundamentos Básicos da Transferência de Calor.pdf
Material referente a introdução a instr.
Reacoes_expansivas_no_concreto_DEF_ABCP_dez2020.pdf
Apresentação_Mecanismo_Garra_P2_18-06-2017.pptx
MIP - soja.- pragas da cultura e seu controle
Boas práticas em rebobinamento trifásico .pdf
Palestras_Tribologia_Profa_MCristinaMFarias.pdf
Treinamento em powerpoint para integração de colaboradores em fábrica de pequ...
Técnicas de montagem e desmontagens.pptx
Artigo sobre industria de petroleo em pdf
1 Conceitos-de-Gestao-da-Qualidaade.pptx
ANTENA DIPOLO DOBRADO NOTA AULA 164 PROFESSOR ANGELO ANTONIO LEITHOLD.pdf
Física I - 01 e 02 - Introdução ao método Científico.pptx
Introducao a Olericultura I E CLASSIFICAÇÃO

DevPira Festival 21 - .NET6 Uma nova forma de construir apis MinimalAPIs

  • 1. .NET 6 Uma nova forma de construir Apis Júnior Porfirio Arquiteto Software - CI&T
  • 2. COMPILERS LANGUAGES RUNTIME COMPONENTS COMMON BASE LIBARIES/APIs INFRASTRUCTURE .NET 6 TOOLS Visual Studio Code CLI Visual Studio Visual Studio for Mac WEB MOBILE GAMING IoT AI ASP.NET Blazor .NET MAUI Xamarin Unity ARM32 ARM64 ML.NET .NET for Apache Spark DESKTOP .NET MAUI WPF WinForms CLOUD Azure .NET – Plataforma unificada ECOSYSTEM NuGet GitHub Components, tools, library vendors
  • 4. .NET 6 Performance https://www.techempower.com/benchmarks/#section=data-r20&hw=ph&test=plaintext >10X faster than Node.js ASP.NET Core web framework https://www.techempower.com/benchmarks/#section=test&runid=3fc99e53-f60d-428e-9937-e809880d3da2&hw=ph&test=fortune&a=2&o=e Sources : +92% Entity Framework Core Performance
  • 5. RELEASED .NET 6 ●Bibliotecas de base comum e SDK unificados ●Desempenho líder da indústria ●Desenvolvimento simplificado, mais fácil de começar ●Novo C# 10, F# 6 releases ●Apple Silicon (Arm64) support ●Long-Term Support Release get.dot.net/6
  • 6. Visual Studio 2022 Desenvolvimento Moderno Crie aplicativos modernos e inovadores usando .NET 6, GitHub e Azure com ferramentas integradas Produtividade pessoal e para times Live Share, Hot reload em todos lugares, Web live preview, IntelliCode, ferramentas de teste e debugging melhoradas Escale para projetos de qualquer tamanho Uma UI moderna e otimizada numa arquitetura 64 bits para suportar os maiores e mais complexos workflows e bases de código VisualStudio.com/download RELEASED
  • 7. RELEASED .NET Upgrade Assistant ●Reduza o tempo e a dificuldade de modernizar bases de código .NET mais antigas ●Experiência guiada passo a passo ●Vários tipos de projeto suportados ●C# & VB.NET linguagens ●Suporta .NET 6 aka.ms/dotnet-upgrade-assistant RELEASED +40K preview downloads
  • 8. Mais modelos, SDK unificado Hot reload via dotnet watch Suporte nativo para máquinas Arm64 Único arquivo EXEs para todas plataformas .NET CLI dotnet new <anything> dotnet watch run dotnet build –a arm64
  • 9. Hot reload Acelera seu desenvolvimento, chega de F5 Menos tempo reiniciando, mais tempo codificando Disponível no CLI & Visual Studio 2022 Todos os tipos de projetos, e todas as versões .NET 4.6+ Melhor com .NET 6
  • 10. Simplificando seu código C# 10 global using Model; // Global usings aplicado globalmente no projeto // using System; // Implicit usings para vários tipos de projeto namespace Model; // File-scope namespace, sem indentação // Records podem ser structs ou classes public record struct Order(Customer Customer, string Kind, int Items); public record class Customer(string Name, string Address); // Lambdas possuí tipos implícitos var parse = (string s) => int.Parse(s); // Func<string, int>
  • 11. APIs leves, de arquivo único e nativas da nuvem Sem Cerimônias Fácil para iniciar Sem controllers Ideal para aplicações em microservices / Faas Minimal APIs var app = WebApplication.Create(args);   app.MapGet("/", () => "Hello World!");   app.Run(); Mínimo código para mínimo apps
  • 12. Sem Filters do MVC Não tem suporte API Versioning. Sem validações IModelValidator por padrão Sem suporte a binding Forms IFormFile Sem suporte a OData Diferenças do Minimal APIs para MVC var app = WebApplication.Create(args);   app.MapGet("/", () => "Hello World!");   app.Run();
  • 13. Simples como deve ser ! Suporte a Data Annotations Suporte a FluentValidation MinimalApis.Validators var app = WebApplication.Create(args);   app.MapGet("/customer", (Customer customer) => Results.Created("", customer)).WithValidator<Customer>();   app.Run(); record Customer( [property:Required] string Name, [property:Required] string Email ); https://github.com/juniorporfirio/MinimalApis.Validators
  • 14. Resolve esse problema nos testes unitários Suporta todos os StatusCode Versão preview Fácil de implementar, ex: Results.Extensions.Ok(object) Pacote do Damian Edwards Agradecimento especial por resolver rápido Issues. MinimalApis.Extensions internal sealed class OkObjectResult : ObjectResult { public OkObjectResult(object? value) : base(value, StatusCodes.Status200OK) { } } ● https://github.com/dotnet/aspnetcore/blob/main/src/Http/Http.Results/src/OkObjectResult.cs ● https://github.com/DamianEdwards/MinimalApis.Extensions