31
ASP .NET Core, .NET Core e EF Core: multiplataforma e otimizados para a nuvem Rogério Moraes de Carvalho Consultor e desenvolvedor de sistemas rogeriom.wordpress.com | @rogeriomc

ASP.NET Core, .NET Core e EF Core: multiplataforma e otimizados para a nuvem

Embed Size (px)

Citation preview

Page 1: ASP.NET Core, .NET Core e EF Core: multiplataforma e otimizados para a nuvem

ASP.NET Core, .NET Core e EF Core:

multiplataforma e otimizados para a nuvem

Rogério Moraes de CarvalhoConsultor e desenvolvedor de sistemas

rogeriom.wordpress.com | @rogeriomc

Page 2: ASP.NET Core, .NET Core e EF Core: multiplataforma e otimizados para a nuvem

Global Azure Bootcamp 2016 - Brasília #gabbsb2016

Agenda

Visão geral da plataforma .NET

Um novo .NET multiplataforma

Evolução da plataforma .NET

Mudança nos nomes de frameworks

Visual Studio e outros editores

.NET Core

O que é o .NET Core?

.NET Core CLI

.NET Platform Standard

.NET Core: da codificação à execução

Entity Framework Core

O que é o Entity Framework Core?

Recursos do Entity Framework Core

ASP.NET Core

O que é o ASP .NET Core?

Desempenho do ASP.NET Core

ASP.NET Core em detalhes

Futuro e recursos para estudo

Previsão de lançamento da versão 1.0

Documentação, vídeos, OSS e outros

Page 3: ASP.NET Core, .NET Core e EF Core: multiplataforma e otimizados para a nuvem

Global Azure Bootcamp 2016 - Brasília #gabbsb2016

Visão geral da plataforma .NET

Page 4: ASP.NET Core, .NET Core e EF Core: multiplataforma e otimizados para a nuvem

Global Azure Bootcamp 2016 - Brasília #gabbsb2016

Um novo .NET multiplataformaVisão geral da plataforma .NET

Inovação MultiplataformaOpen Source

.NET Core xPlat “Roslyn”

ASP .NET Core

EF Core

Inovações nas linguagens

“RyuJit”

SIMDIoT

.NET CoreASP.NET Core

Page 5: ASP.NET Core, .NET Core e EF Core: multiplataforma e otimizados para a nuvem

Global Azure Bootcamp 2016 - Brasília #gabbsb2016

Evolução da plataforma .NETVisão geral da plataforma .NET

.NET Core .NET Framework 4.6.x

Comum

Nova geração do JIT (“RyuJIT”)

SIMD

Componentes do ambiente de execução

Bibliotecas .NET Core

Bibliotecas .NET Framework 4.6.x

Pacotes NuGetCompiladores

Inovações nas linguagens

Plataforma de compiladores .NET (“Roslyn”)

Page 6: ASP.NET Core, .NET Core e EF Core: multiplataforma e otimizados para a nuvem

Global Azure Bootcamp 2016 - Brasília #gabbsb2016

Mudança nos nomes de frameworksVisão geral da plataforma .NET

Post no blog do Scott Hanselman (19 Jan 2016)

ASP.NET 5 is dead - Introducing ASP.NET Core 1.0 and .NET Core 1.0

Motivo da mudança de nomenclatura dos frameworks

Os frameworks estão sendo reescritos do zero

Reintrodução dos novos frameworks com novos nomes

ASP .NET 5 é agora ASP.NET Core 1.0

ASP.NET MVC 6 é agora ASP.NET Core MVC 1.0

.NET Core 5 é agora .NET Core 1.0

Entity Framework 7 é agora Entity Framework Core 1.0 (EF Core 1.0)

As novas nomenclaturas ainda estão sendo gradativamente adotadas

Page 7: ASP.NET Core, .NET Core e EF Core: multiplataforma e otimizados para a nuvem

Global Azure Bootcamp 2016 - Brasília #gabbsb2016

Visual Studio e outros editoresVisão geral da plataforma .NET

Visual Studio

Visual Studio Community 2015

IDE somente para Windows

Grátis para apps não coorporativas

Visual Studio Code

Editor de código multiplataforma

Windows, Mac OS X e Linux

Edição, compilação e depuração

www.visualstudio.com

Outros editores

Baseados no framework Electron

Atom do GitHubatom.io

Visual Studio Codewww.visualstudio.com

Brackets da Adobebrackets.io

Diversas outras opções

Sublime Text, Emacs, Vim etc.

Page 8: ASP.NET Core, .NET Core e EF Core: multiplataforma e otimizados para a nuvem

Global Azure Bootcamp 2016 - Brasília #gabbsb2016

.NET Core

Page 9: ASP.NET Core, .NET Core e EF Core: multiplataforma e otimizados para a nuvem

Global Azure Bootcamp 2016 - Brasília #gabbsb2016

O que é o .NET Core?.NET Core

Implementação do .NET

Modular e pequena

Multiplataforma

Windows, Linux e Mac OS X

Isolamento em nível de aplicação

Construído de forma aberta

Open Source Software (OSS)

Suporta vários modelos de apps

Opção para os próximos 10 anos

Desenvolvimento de software .NET

Modelo de aplicações

ASP.NET Core

Qualquer outro

modelo de aplicações

Base Class Library (BCL)unificada

Camada de adaptação do ambiente de execução

.NET Native Outro ambiente

de execução

Modelo de aplicações

Universal Windows Apps

CoreCLR

Page 10: ASP.NET Core, .NET Core e EF Core: multiplataforma e otimizados para a nuvem

Global Azure Bootcamp 2016 - Brasília #gabbsb2016

.NET Core CLI

.NET Core

O que é o .NET Core CLI?Um novo conjunto de ferramentas CLI

Simples, extensíveis e independentes

Para construir e gerenciar projetos .NET

ObjetivosAgnóstico

Linguagem, destino e ambiente de execução

Extensibilidade simples

Multiplataforma

Substitui o .NET Execution EnvironmentSubstitui as ferramentas do DNX

dnx, dnvm, dnu

Ferramentas do .NET Core CLIAgregador de ferramentas: dotnet

Sintaxe: dotnet {comando} --arg

Convenção: dotnet-{comando} --arg

Algumas ferramentas disponíveisdotnet new --lang --type

Cria arquivos de um novo tipo de projeto

dotnet restore [argumentos]

Restaura pacotes NuGet dependentes

dotnet run [argumentos]

Compila e executa sua app em um passo

dotnet build [argumentos]

Compila sua app ou biblioteca

A transição do DNX para o .NET Core CLI está em progresso e planejada para o RC2

Page 11: ASP.NET Core, .NET Core e EF Core: multiplataforma e otimizados para a nuvem

Global Azure Bootcamp 2016 - Brasília #gabbsb2016

.NET Platform Standard

.NET Core

O que é o .NET Platform Standard?

Um modelo de portabilidade binária

Mais sólido para futuras plataformas .NET

Plano de versionamento mais simples

Evolução da Portable Class Library (PCL)

Define a interseção de APIs por plataformas

Utiliza nomes para identificar as plataformas

Target Framework Moniker (TFM)

Exemplo de TFM: portable-net45+win8

Novo modelo de identificação

Exemplo de TFM: netstandard1.3

Plataforma destino Versões

.NET Platform Standard 1.0 1.1 1.2 1.3 1.4

.NET Framework

4.6.x

4.6

4.5.2

4.5.1

4.5

Universal Windows Platform 10.0

Windows 8.1

8.0

Windows Phone 8.1

8.0

O TFM netstandard está em progresso, mas ainda não funciona em pacotes

Page 12: ASP.NET Core, .NET Core e EF Core: multiplataforma e otimizados para a nuvem

Global Azure Bootcamp 2016 - Brasília #gabbsb2016

.NET Core: da codificação à execução

.NET Core

Ferramentas .NET Native

Código(App.cs)

Referências (Módulos, NuGet)

App.exe (stub)

App.dll

Compilador JIT (RyuJIT)

App.dll

Mais as DLLs referenciadas

Page 13: ASP.NET Core, .NET Core e EF Core: multiplataforma e otimizados para a nuvem

Global Azure Bootcamp 2016 - Brasília #gabbsb2016

Demonstração.NET Core

Mac OS X El Capitan (10.11.4) Ubuntu 14.04.4

Atom 1.6.0

Visual Studio Code 0.10.11

Windows 10 Pro

Sublime Text 3

Page 14: ASP.NET Core, .NET Core e EF Core: multiplataforma e otimizados para a nuvem

Global Azure Bootcamp 2016 - Brasília #gabbsb2016

Entity Framework Core

Page 15: ASP.NET Core, .NET Core e EF Core: multiplataforma e otimizados para a nuvem

Global Azure Bootcamp 2016 - Brasília #gabbsb2016

O que é o Entity Framework Core?Entity Framework Core

Entity Framework (EF)

Tecnologia de acesso a dados recomendada pela Microsoft para novas apps .NET

Entity Framework Core (EF Core)

Experiência de desenvolvimento similar ao EF 6.x

Modelo Code First (entidades POCO - Plain Old CLR Objects)

LINQ para entidades

DbContext, DbSet etc

Suporte a fontes de dados relacionais e não relacionais

Muito mais leve que o Entity Framework 6.x

Suporte em nuvem, em dispositivos (UWP) e em cenários .NET tradicionais

Page 16: ASP.NET Core, .NET Core e EF Core: multiplataforma e otimizados para a nuvem

Global Azure Bootcamp 2016 - Brasília #gabbsb2016

Recursos do Entity Framework Core (implementados)

Entity Framework Core

Modelagem

Modelagem Code First

A partir de entidades POCO

Relacionamentos entre entidades

Propriedades de estado sombreado

Restrições de unicidade e índices

Convenções pré-definidas

Validação do modelo

Geração de valores chaves (sequence)

Mapeamento para tabelas (relacional)

Rastreamento de mudanças

Rastreamento instantâneo

Acesso ao estado de rastreamento

Anexo de entidades desanexadas

Salvamento de mudanças

Persistências de mudanças no BD

Concorrência otimizada

Salvamento assíncrono

Salvamento transacional (atômico)

Envio de instruções em lote

Page 17: ASP.NET Core, .NET Core e EF Core: multiplataforma e otimizados para a nuvem

Global Azure Bootcamp 2016 - Brasília #gabbsb2016

Recursos do Entity Framework Core (implementados)

Entity Framework Core

Consultas

Suporte básico ao LINQ

Avaliação LINQ do lado do cliente

Consultas sem rastreamento

Consultas de dados relacionados

Métodos Include e ThenInclude

Consultas assíncronas

Tradução de funções BCL comuns

Consultas SQL diretas

Método DbSet.FromSql

Gerenciamento de esquema de BD

APIs de criação/exclusão de BD

Página de erro de banco de dados

Middleware do ASP.NET Core

Controle de migrações (Migrations)

Provedores de acesso a dados

SQL Server, SQLite, InMemory

Plataformas

.NET completo, ASP.NET Core,

Universal Windows Platform

Page 18: ASP.NET Core, .NET Core e EF Core: multiplataforma e otimizados para a nuvem

Global Azure Bootcamp 2016 - Brasília #gabbsb2016

Recursos do Entity Framework Core (em progresso)

Entity Framework Core

Modelagem

Anotações de dados em entidades

Padrão de herança TPH (Table-Per-Hierarchy)

Uma tabela para entidades numa herança

Qualidade

Documentação

github.com/aspnet/EntityFramework.Docs

Documentação XML (IntelliSense)

Revisão das APIs

Análise da limpeza e consistência da API

Desempenho

Melhorias de desempenho

Engenharia reversa: BD para POCO

Consulta

Tradução: propriedades de navegação

Plataformas

Estabilidade em Linux e Mac OS X

Provedores de acesso a dados

PostgreSQL e SQL Compact

Page 19: ASP.NET Core, .NET Core e EF Core: multiplataforma e otimizados para a nuvem

Global Azure Bootcamp 2016 - Brasília #gabbsb2016

Recursos do Entity Framework Core (planejamento)

Entity Framework Core

Recursos planejados para 1.0 RTM(mas que ainda não estão em desenvolvimento)

Contexto em tempo de projeto

Descoberta e carregamento

Importante para ferramentas

Migrations, por exemplo

Implantação de mudanças em BD

Exclusão em cascata (cascade delete)

Melhorias em logging

Recursos críticos em ORM(muito provavelmente fora da versão 1.0)

Consulta

Carregamento explícito

Subconsultas

Tradução de agrupamentos para SQL

Avanços em logging

Atualização do modelo a partir do BD

Modelagem

Tipos complexos

O Entity Framework Core somente será considerado a versão recomendada do EF depois de implementados os recursos críticos

Page 20: ASP.NET Core, .NET Core e EF Core: multiplataforma e otimizados para a nuvem

Global Azure Bootcamp 2016 - Brasília #gabbsb2016

ASP.NET Core

Page 21: ASP.NET Core, .NET Core e EF Core: multiplataforma e otimizados para a nuvem

Global Azure Bootcamp 2016 - Brasília #gabbsb2016

O que é o ASP .NET Core?ASP.NET Core

Um novo framework ASP.NET de código aberto e multiplataforma

Para construir aplicações Web modernas, prontas para a nuvem, em .NET

Multiplataforma

Escolha seus editores

e ferramentas

Open Source com

contribuiçõesOSS

Transição simples de

on-premises para a nuvem

Ciclos rápidos de

desenvolvimentoTotalmente modular

Rápido

Page 22: ASP.NET Core, .NET Core e EF Core: multiplataforma e otimizados para a nuvem

Global Azure Bootcamp 2016 - Brasília #gabbsb2016

Desempenho do ASP.NET CoreASP.NET Core

ASP.NET Core: 2300% mais requisições por segundo que o ASP.NET 4.6

Foram 1,15 milhões de requisições por segundo (rps)

www.ageofascent.com/asp-net-core-exeeds-1-15-million-requests-12-6-gbps

Page 23: ASP.NET Core, .NET Core e EF Core: multiplataforma e otimizados para a nuvem

Global Azure Bootcamp 2016 - Brasília #gabbsb2016

ASP.NET Core em detalhesASP.NET Core

Visual Basic 14 Visual Basic 14 (em breve)

.NET Framework 4.6

.NET Framework completo para qualquer cenário

Suporte das bibliotecas somente em Windows

.NET Core 1.0Bibliotecas modulares e multiplataforma

Ambiente de execução otimizado para servidores e para a nuvem

C# 6 C# 6

Page 24: ASP.NET Core, .NET Core e EF Core: multiplataforma e otimizados para a nuvem

Global Azure Bootcamp 2016 - Brasília #gabbsb2016

ASP.NET Core em detalhesASP.NET Core

Hospedagem

Kestrel (servidor web multiplataforma), WebListener e IIS/IISExpress no Windows

Middleware

Roteamento, autenticação, arquivos estáticos, diagnósticos, manipulação de erros,

sessão, CORS, localização, personalizados etc.

Injeção de dependência

Configuração e logging

Frameworks de aplicação

MVC, Web API, Identity, Web Pages e SignalR

Page 25: ASP.NET Core, .NET Core e EF Core: multiplataforma e otimizados para a nuvem

Global Azure Bootcamp 2016 - Brasília #gabbsb2016

ASP.NET Core em detalhesASP.NET Core

ASP.NET Core frameworks (modelos de aplicações)ASP.NET Web Pages 3.2.3, ASP.NET MVC 5.2.3 e ASP.NET Web API 2.2ASP.NET Core MVC (MVC + Web API + Web Pages)

Page 26: ASP.NET Core, .NET Core e EF Core: multiplataforma e otimizados para a nuvem

Global Azure Bootcamp 2016 - Brasília #gabbsb2016

ASP.NET Core em detalhesASP.NET Core

ASP.NET Core MVC

Um conjunto de conceitos unificado

Remoção de duplicações de tipos similares

Engloba aplicações Web com interface gráfica (MVC) e serviços Web (Web API)

Construído sobre o ASP.NET Core

Suporta o .NET Core

Hospedagem no Internet Information Services (IIS)

Hospedagem própria: WebListener em Windows e Kestrel multiplataforma

Integração intensa com injeção de dependência

Tag Helpers

Page 27: ASP.NET Core, .NET Core e EF Core: multiplataforma e otimizados para a nuvem

Global Azure Bootcamp 2016 - Brasília #gabbsb2016

ASP.NET Core em detalhesASP.NET Core

ASP.NET MVC Core (MVC + Web API + Web Pages)

Recurso Executa no .NET 4.6 Executa no .NET Core 1.0

Pronto para a nuvem

Projeto modular

Injeção de dependência

Depuração e rastreamento consistente

Desenvolvimento rápido (sem necessidade de compilação)

Open Source

Lado a lado completo (framework distribuído dentro da aplicação)

Inicialização rápida, baixo uso de memória, alta taxa de transferência

Page 28: ASP.NET Core, .NET Core e EF Core: multiplataforma e otimizados para a nuvem

Global Azure Bootcamp 2016 - Brasília #gabbsb2016

DemonstraçãoASP.NET Core

Ubuntu 14.04.4

Firefox

Windows 10 Pro

Edge

Mac OS X El Capitan (10.11.4)

Safari

Page 29: ASP.NET Core, .NET Core e EF Core: multiplataforma e otimizados para a nuvem

Global Azure Bootcamp 2016 - Brasília #gabbsb2016

Futuro e recursos para estudo

Page 30: ASP.NET Core, .NET Core e EF Core: multiplataforma e otimizados para a nuvem

Global Azure Bootcamp 2016 - Brasília #gabbsb2016

Previsão de lançamento da versão 1.0Futuro e recursos para estudo

ASP.NET 5 Beta 7

Multiplataforma (Linux e Mac OS X)2 Set

2015

ASP.NET 5 Beta 8

Finalização dos recursos para a v1.015 Out

2015

ASP.NET 5 RC1

Estabilidade e desempenhoNov

2015

ASP.NET Core 1.0 RC2

Adoção do .NET Core CLI e do

.NET Platform Standard

TBD

ASP.NET Core 1.0 (RTM)

Dependente da finalização do RC2

TBD

2016

.NET Core 1.0 (RTM)

Alinhado com as previsões

do ASP.NET Core 1.0 (RTM)

TBD

2016

Nov

2015

.NET Core 5 RC1

Suporte para ASP.NET Core,

Console apps e Windows 10 UWP

Entity Framework 7 Beta 72 Set

2015

Entity Framework 7 Beta 815 Out

2015

Entity Framework 7 RC1Nov

2015

Entity Framework Core 1.0 RC2TBD

Entity Framework Core 1.0 (RTM)

Alinhado com as previsões

do ASP.NET Core 1.0 (RTM)

TBD

2016

.NET Core 1.0 RC2

Adoção do .NET Core CLI e do

.NET Platform Standard

TBD

2016

Page 31: ASP.NET Core, .NET Core e EF Core: multiplataforma e otimizados para a nuvem

Global Azure Bootcamp 2016 - Brasília #gabbsb2016

Documentação, vídeos, OSS e outrosFuturo e recursos para estudo

.NET Foundation

www.dotnetfoundation.org

.NET Core (GitHub: Pages | Repositórios)

dotnet.github.io | github.com/dotnet

.NET Blog

blogs.msdn.microsoft.com/dotnet

.NET Core CLI tools (GitHub: Repositório)

github.com/dotnet/cli

.NET Web Development and Tools Blog

blogs.msdn.microsoft.com/webdev

Entity Framework Core 1.0 Documentation

docs.efproject.net

ASP.NET Core 1.0 Documentation

docs.asp.net

ASP.NET Community Standup

live.asp.net

ASP.NET Monsters

channel9.msdn.com/Series/aspnetmonsters

ASP.NET Core (GitHub: Repositórios)

github.com/aspnet