Globalcode – Open4education
.NET.Core e ASP.NET Core:
Presente e Futuro
Renato Groffe
Microsoft MVP, MTAC
Globalcode – Open4educationhttps://medium.com/@renato.groffe/
Microsoft Most Valuable Professional (MVP)
Multi-Plataform Technical Audience Contributor
(MTAC)
Mais de 15 anos de experiência na área de
Tecnologia
Autor Técnico e Palestrante
Um dos organizadores do Canal .NET e do
.NET SP
Renato Groffe
https://medium.com/@renato.groffe/
Globalcode – Open4educationhttps://medium.com/@renato.groffe/
Contatos
https://medium.com/@renato.groffe/
/renatogroffe /in/renatogroffe
/canaldotnet
/renatogroffe/renatogroff
/canaldotnet
Globalcode – Open4educationhttps://medium.com/@renato.groffe/
Agenda
.NET Core e ASP.NET Core: uma visão geral
.NET Core 2.1 e ASP.NET Core 2.1: visão geral das novidades
Um pouco sobre o .NET Core 2.2 e o ASP.NET Core 2.2
O que esperar do .NET Core 3.0
Alguns exemplos práticos
Globalcode – Open4educationhttps://medium.com/@renato.groffe/
.NET Core e ASP.NET Core – Primórdios
Chamados inicialmente de ASP.NET vNext/.NET vNext
e depois ASP.NET 5/.NET 5
Primeiros releases em 2014
Rebatizado como .NET Core 1.0 e ASP.NET Core 1.0
em Janeiro/2016
Um novo framework, completamente reescrito
Open source
Globalcode – Open4educationhttps://medium.com/@renato.groffe/
Multiplataforma: Windows, Linux e
Mac
Suporte ao .NET Standard
Nova arquitetura (unificada)
Suporte a containers Docker
Atualmente na versão 2.1
(Maio/2018); versão 2.2 em Preview
.NET Core e ASP.NET Core – Visão Geral
Globalcode – Open4educationhttps://medium.com/@renato.groffe/
.NET Core 2.1 e ASP.NET Core 2.1
Lançamento oficial no final de Maio/2018,
juntamente com o Entity Framework Core 2.1
Suporte do Visual Studio 2017 Update 15.7.x
em diante, Visual Studio Code e Visual Studio
for Mac
Globalcode – Open4educationhttps://medium.com/@renato.groffe/
Microsoft.AspNetCore.App
Novo metapackage default
Recomendável o seu uso ao invés de
Microsoft.AspNetCore.All
Reduz o número de dependências de terceiros
em relação ao metapackage anterior
Globalcode – Open4educationhttps://medium.com/@renato.groffe/
Compatibility Version
Possibilidade de manter os comportamentos de
versões anteriores, por mais que se empregue
um release mais atual
Acionado no método ConfigureServices da
classe Startup
Globalcode – Open4educationhttps://medium.com/@renato.groffe/
Compatibility Version
Globalcode – Open4educationhttps://medium.com/@renato.groffe/
Suporte a HTTPS
Habilitado por default com o ASP.NET Core 2.1
Uso de um certificado de desenvolvimento
Redirecionamento automático de HTTP para
HTTPS
Uso do protocolo HSTS (HTTP Strict Transport
Security), que determina o acesso a uma
aplicação em produção somente via HTTPS
Globalcode – Open4educationhttps://medium.com/@renato.groffe/
Suporte a HTTPS
Globalcode – Open4educationhttps://medium.com/@renato.groffe/
Suporte a GDPR
EU General Data Protection Regulation
(GDPR)
Regulamentação da União Europeia sobre
proteção de dados e privacidade de seus
cidadãos
Templates de projetos MVC e Razor
Pages já contemplam ajustes
Globalcode – Open4educationhttps://medium.com/@renato.groffe/
Suporte a GDPR
Globalcode – Open4educationhttps://medium.com/@renato.groffe/
Suporte a GDPR
Globalcode – Open4educationhttps://medium.com/@renato.groffe/
Docker + ASP.NET Core 2.1
Geração de imagens menores
Suporte a Alpine Linux
Globalcode – Open4educationhttps://medium.com/@renato.groffe/
Docker + ASP.NET Core 2.1
Antes com o ASP.NET Core 2.0:
Globalcode – Open4educationhttps://medium.com/@renato.groffe/
Docker + ASP.NET Core 2.1
ASP.NET Core 2.1:
ASP.NET Core 2.1 com Alpine:
Globalcode – Open4educationhttps://medium.com/@renato.groffe/
IHttpClientFactory
Configuração de HttpClients de
forma centralizada
Acesso aos clients via injeção de
dependências
Named e Typed clientes
Globalcode – Open4educationhttps://medium.com/@renato.groffe/
IHttpClientFactory - Exemplo
GitHub:
github.com/renatogroffe/ASPNETCore2.1_IHttpClientFactory
Globalcode – Open4educationhttps://medium.com/@renato.groffe/
O atributo ApiController
Atributo associado a um Controller
APIs com um código mais limpo
Geração de erro automático do tipo 400 ao
encontrar problemas de validação
Capacidade de inferir tipos complexos sem o uso
de atributos como [FromBody]
Globalcode – Open4educationhttps://medium.com/@renato.groffe/
Antes de ApiController
Globalcode – Open4educationhttps://medium.com/@renato.groffe/
Com ApiController
Globalcode – Open4educationhttps://medium.com/@renato.groffe/
ApiController - Exemplo
GitHub:
github.com/renatogroffe/ASPNETCore2.1_ApiController
Globalcode – Open4educationhttps://medium.com/@renato.groffe/
O tipo ActionResult<T>
Simplifica a codificação de
instruções de retorno em APIs
Globalcode – Open4educationhttps://medium.com/@renato.groffe/
Antes de ActionResult<T>
Globalcode – Open4educationhttps://medium.com/@renato.groffe/
Com ActionResult<T>
Globalcode – Open4educationhttps://medium.com/@renato.groffe/
ActionResult<T> - Exemplo
GitHub:
github.com/renatogroffe/MongoDB-DotNetCore2.1
Globalcode – Open4educationhttps://medium.com/@renato.groffe/
Razor Class Libraries
Elementos de UI disponibilizados como biblioteca a ser
consumida por outros projetos
Capacidade de encapsular Razor Pages, Views e
Controllers
Possibilidade de publicação como um pacote do NuGet
Conteúdos de arquivos .cshtml podem ser
customizados no projetos que consomem uma
biblioteca
Globalcode – Open4educationhttps://medium.com/@renato.groffe/
Razor Class Libraries
Globalcode – Open4educationhttps://medium.com/@renato.groffe/
Razor Class Libraries - Exemplo
GitHub:
github.com/renatogroffe/ASPNETCore2.1_RazorClassLibrary
Globalcode – Open4educationhttps://medium.com/@renato.groffe/
Compressão com Brotli
Novo padrão de compactação
Representa uma evolução do padrão GZip
Maior compressão na resposta gerada por
aplicações Web
Globalcode – Open4educationhttps://medium.com/@renato.groffe/
Compressão com Brotli - Exemplo
Globalcode – Open4educationhttps://medium.com/@renato.groffe/
Compressão com Brotli - Exemplo
GitHub:
github.com/renatogroffe/ASPNETCore2.1_Compressao-RemocaoNulls
Globalcode – Open4educationhttps://medium.com/@renato.groffe/
Outras novidades
Identity UI library & scaffolding
ASP.NET Core Identity fornecido como uma Razor Class Library
Kestrel com transporte default baseado em managed
sockets
ASP.NET Core Generic Host → infraestrutura
desacoplada do pipeline HTTP
Templates SPA
Atualizações nos templates para Angular, React e React + Redux
Suporte a Angular CLI e create-react-app
Globalcode – Open4educationhttps://medium.com/@renato.groffe/
Outras novidades
Maior compressão com o suporte ao algoritmo Brotli
Infraestrutura para testes de integração/funcionais com
um servidor de testes em memória
ASP.NET Core SignalR
Possibilidade de desenvolvimento aplicações real-time com
ASP.NET Core
Integração com Azure SignalR Service
Globalcode – Open4educationhttps://medium.com/@renato.groffe/
.NET Core 2.2 e ASP.NET Core 2.2
Lançamento do Preview 3 em Outubro/2018
Suporte do Visual Studio 2017 Update 15.9
(Preview) e Visual Studio Code
Globalcode – Open4educationhttps://medium.com/@renato.groffe/
Novidades da versão 2.2
Suporte a HTTP/2
IIS in-process hosting
Maior performance
Requisições até 4 vezes mais rápidas
Novos templates para sites MVC e
Razor Pages
Globalcode – Open4educationhttps://medium.com/@renato.groffe/
.NET Core 3.0
Suporte a Windows Desktop
Applications
Desenvolvimento de aplicações em
Windows Forms, Windows Presentation
Framework (WPF), and UWP XAML
empregando bibliotecas do .NET Core
Globalcode – Open4educationhttps://medium.com/@renato.groffe/
Dúvidas?
Globalcode – Open4educationhttps://medium.com/@renato.groffe/
Obrigado!!!

.NET Core e ASP.NET Core: Presente e Futuro - .NET SP - Novembro/2018