um novo .net multiplataforma:asp.net core, .net core e entity framework core

30
Um novo .NET multiplataforma: ASP .NET Core, .NET Core e Entity Framework Core Rogério Moraes de Carvalho Consultor e desenvolvedor de sistemas rogeriom.wordpress.com | @rogeriomc

Upload: rogerio-moraes-de-carvalho

Post on 08-Feb-2017

1.741 views

Category:

Technology


5 download

TRANSCRIPT

Page 1: Um novo .NET multiplataforma:ASP.NET Core, .NET Core e Entity Framework Core

Um novo .NET multiplataforma:

ASP.NET Core, .NET Core e Entity Framework Core

Rogério Moraes de CarvalhoConsultor e desenvolvedor de sistemas

rogeriom.wordpress.com | @rogeriomc

Page 2: Um novo .NET multiplataforma:ASP.NET Core, .NET Core e Entity Framework Core

© 2016, Rogério Moraes de Carvalho (rogeriomc.wordpress.com | @rogeriomc) JoinCommunity 2016 | Goiânia/GO

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?

Novidades 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: Um novo .NET multiplataforma:ASP.NET Core, .NET Core e Entity Framework Core

© 2016, Rogério Moraes de Carvalho (rogeriomc.wordpress.com | @rogeriomc) JoinCommunity 2016 | Goiânia/GO

Visão geral da plataforma .NET

Page 4: Um novo .NET multiplataforma:ASP.NET Core, .NET Core e Entity Framework Core

© 2016, Rogério Moraes de Carvalho (rogeriomc.wordpress.com | @rogeriomc) JoinCommunity 2016 | Goiânia/GO

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: Um novo .NET multiplataforma:ASP.NET Core, .NET Core e Entity Framework Core

© 2016, Rogério Moraes de Carvalho (rogeriomc.wordpress.com | @rogeriomc) JoinCommunity 2016 | Goiânia/GO

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

.NET Core .NET Framework 4.6.1

Comum

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

SIMD

Componentes do ambiente de execução

Bibliotecas .NET Core

Bibliotecas .NET Framework 4.6.1

Pacotes NuGetCompiladores

Inovações nas linguagens

Plataforma de compiladores .NET (“Roslyn”)

Page 6: Um novo .NET multiplataforma:ASP.NET Core, .NET Core e Entity Framework Core

© 2016, Rogério Moraes de Carvalho (rogeriomc.wordpress.com | @rogeriomc) JoinCommunity 2016 | Goiânia/GO

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

.NET Framework

Framework para aplicações

.NET em Windows

Distribuído com o Windows

.NET Core

Distribuído com a aplicação

Framework multiplataforma e

open source otimizado para

fluxos de desenvolvimento e

aplicações modernas

Xamarin

Distribuído com a aplicação

Ambiente multiplataforma e

open source baseado no

framework Mono para

iOS, OS X e AndroidMo

delo

s d

e

ap

licaçõ

es

Bib

lio

tecas

base

s

Componentes do ambiente de execuçãoCompiladores Linguagens

C#F#

VB

Infraestrutura comum

WPF Windows Forms

WCF ASP.NET

UWP Console

ASP.NET Core

iOS

OS X

Android

Base Class Library Core Library Mono Class Library

Page 7: Um novo .NET multiplataforma:ASP.NET Core, .NET Core e Entity Framework Core

© 2016, Rogério Moraes de Carvalho (rogeriomc.wordpress.com | @rogeriomc) JoinCommunity 2016 | Goiânia/GO

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 8: Um novo .NET multiplataforma:ASP.NET Core, .NET Core e Entity Framework Core

© 2016, Rogério Moraes de Carvalho (rogeriomc.wordpress.com | @rogeriomc) JoinCommunity 2016 | Goiânia/GO

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 9: Um novo .NET multiplataforma:ASP.NET Core, .NET Core e Entity Framework Core

© 2016, Rogério Moraes de Carvalho (rogeriomc.wordpress.com | @rogeriomc) JoinCommunity 2016 | Goiânia/GO

.NET Core

Page 10: Um novo .NET multiplataforma:ASP.NET Core, .NET Core e Entity Framework Core

© 2016, Rogério Moraes de Carvalho (rogeriomc.wordpress.com | @rogeriomc) JoinCommunity 2016 | Goiânia/GO

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 11: Um novo .NET multiplataforma:ASP.NET Core, .NET Core e Entity Framework Core

© 2016, Rogério Moraes de Carvalho (rogeriomc.wordpress.com | @rogeriomc) JoinCommunity 2016 | Goiânia/GO

.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 foi liberada no RC2 (16/05/2016)

Page 12: Um novo .NET multiplataforma:ASP.NET Core, .NET Core e Entity Framework Core

© 2016, Rogério Moraes de Carvalho (rogeriomc.wordpress.com | @rogeriomc) JoinCommunity 2016 | Goiânia/GO

.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 foi liberado no .NET Core RC2

Page 13: Um novo .NET multiplataforma:ASP.NET Core, .NET Core e Entity Framework Core

© 2016, Rogério Moraes de Carvalho (rogeriomc.wordpress.com | @rogeriomc) JoinCommunity 2016 | Goiânia/GO

.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 14: Um novo .NET multiplataforma:ASP.NET Core, .NET Core e Entity Framework Core

© 2016, Rogério Moraes de Carvalho (rogeriomc.wordpress.com | @rogeriomc) JoinCommunity 2016 | Goiânia/GO

Demonstração.NET Core

Mac OS X El Capitan (10.11.5) Ubuntu 14.04.4 (breve 16.04)

Atom 1.7.3

Visual Studio Code 1.1.1

Windows 10 Pro

Sublime Text 3

Page 15: Um novo .NET multiplataforma:ASP.NET Core, .NET Core e Entity Framework Core

© 2016, Rogério Moraes de Carvalho (rogeriomc.wordpress.com | @rogeriomc) JoinCommunity 2016 | Goiânia/GO

Entity Framework Core

Page 16: Um novo .NET multiplataforma:ASP.NET Core, .NET Core e Entity Framework Core

© 2016, Rogério Moraes de Carvalho (rogeriomc.wordpress.com | @rogeriomc) JoinCommunity 2016 | Goiânia/GO

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 17: Um novo .NET multiplataforma:ASP.NET Core, .NET Core e Entity Framework Core

© 2016, Rogério Moraes de Carvalho (rogeriomc.wordpress.com | @rogeriomc) JoinCommunity 2016 | Goiânia/GO

Novidades do Entity Framework CoreEntity Framework Core

Modelagem

Chaves alternativas

Propriedades de estado sombreado

Restrições de unicidade e índices

Geração de valores chaves (sequence)

Salvamento de mudanças

Envio de instruções em lote

Consultas

Avaliação LINQ do lado do cliente

Provedores de acesso a dados

In Memory

Modelos de aplicação

ASP.NET Core

Universal Windows Platform

Plataformas

Mac OS X / Linux

Universal Windows Platform

Engenharia reversa

Banco de dados para entidades POCO

Page 18: Um novo .NET multiplataforma:ASP.NET Core, .NET Core e Entity Framework Core

© 2016, Rogério Moraes de Carvalho (rogeriomc.wordpress.com | @rogeriomc) JoinCommunity 2016 | Goiânia/GO

ASP.NET Core

Page 19: Um novo .NET multiplataforma:ASP.NET Core, .NET Core e Entity Framework Core

© 2016, Rogério Moraes de Carvalho (rogeriomc.wordpress.com | @rogeriomc) JoinCommunity 2016 | Goiânia/GO

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 20: Um novo .NET multiplataforma:ASP.NET Core, .NET Core e Entity Framework Core

© 2016, Rogério Moraes de Carvalho (rogeriomc.wordpress.com | @rogeriomc) JoinCommunity 2016 | Goiânia/GO

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 21: Um novo .NET multiplataforma:ASP.NET Core, .NET Core e Entity Framework Core

© 2016, Rogério Moraes de Carvalho (rogeriomc.wordpress.com | @rogeriomc) JoinCommunity 2016 | Goiânia/GO

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 22: Um novo .NET multiplataforma:ASP.NET Core, .NET Core e Entity Framework Core

© 2016, Rogério Moraes de Carvalho (rogeriomc.wordpress.com | @rogeriomc) JoinCommunity 2016 | Goiânia/GO

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 23: Um novo .NET multiplataforma:ASP.NET Core, .NET Core e Entity Framework Core

© 2016, Rogério Moraes de Carvalho (rogeriomc.wordpress.com | @rogeriomc) JoinCommunity 2016 | Goiânia/GO

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 24: Um novo .NET multiplataforma:ASP.NET Core, .NET Core e Entity Framework Core

© 2016, Rogério Moraes de Carvalho (rogeriomc.wordpress.com | @rogeriomc) JoinCommunity 2016 | Goiânia/GO

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 25: Um novo .NET multiplataforma:ASP.NET Core, .NET Core e Entity Framework Core

© 2016, Rogério Moraes de Carvalho (rogeriomc.wordpress.com | @rogeriomc) JoinCommunity 2016 | Goiânia/GO

ASP.NET Core em detalhesASP.NET Core

ASP.NET Core MVC (MVC + Web API)

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 26: Um novo .NET multiplataforma:ASP.NET Core, .NET Core e Entity Framework Core

© 2016, Rogério Moraes de Carvalho (rogeriomc.wordpress.com | @rogeriomc) JoinCommunity 2016 | Goiânia/GO

ASP.NET Core em detalhesASP.NET Core

Visual

Studio

ASP.NET Core

Ambiente de execução e bibliotecas baseCLR

Bibliotecas

Compiladores

CLI etc.

Modelo de aplicações web modernasASP.NET Core MVC

ASP.NET Core Web API

ASP.NET Core Web Pages

SignalR Core (provavelmente)

Ferramentas de desenvolvimentoPreview 1 com ASP.NET Core RC2 e .NET Core RC2

Preview 2 com ASP.NET Core RTM e .NET Core RTM

Visual Studio “15” RTM (Visual Studio 2016 ou 2017)

.NET Core

Page 27: Um novo .NET multiplataforma:ASP.NET Core, .NET Core e Entity Framework Core

© 2016, Rogério Moraes de Carvalho (rogeriomc.wordpress.com | @rogeriomc) JoinCommunity 2016 | Goiânia/GO

DemonstraçãoASP.NET Core

Ubuntu 14.04.4

Firefox

Windows 10 Pro

Edge

Mac OS X El Capitan (10.11.4)

Safari

Page 28: Um novo .NET multiplataforma:ASP.NET Core, .NET Core e Entity Framework Core

© 2016, Rogério Moraes de Carvalho (rogeriomc.wordpress.com | @rogeriomc) JoinCommunity 2016 | Goiânia/GO

Futuro e recursos para estudo

Page 29: Um novo .NET multiplataforma:ASP.NET Core, .NET Core e Entity Framework Core

© 2016, Rogério Moraes de Carvalho (rogeriomc.wordpress.com | @rogeriomc) JoinCommunity 2016 | Goiânia/GO

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.0

15 Out

2015

ASP.NET 5 RC1

Estabilidade e desempenho

Nov

2015

ASP.NET Core 1.0 RC2

Adoção do .NET Core CLI e do

.NET Platform Standard

16 Mai

2016

ASP.NET Core 1.0 (RTM)Final

Jun

2016

.NET Core 1.0 (RTM)

Alinhado com as previsões

do ASP.NET Core 1.0 (RTM)

Final

Jun

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 RC216 Mai

2016

Entity Framework Core 1.0 (RTM)

Alinhado com as previsões

do ASP.NET Core 1.0 (RTM)

Final

Jun

2016

.NET Core 1.0 RC2

Adoção do .NET Core CLI e do

.NET Platform Standard

16 Mai

2016

Page 30: Um novo .NET multiplataforma:ASP.NET Core, .NET Core e Entity Framework Core

© 2016, Rogério Moraes de Carvalho (rogeriomc.wordpress.com | @rogeriomc) JoinCommunity 2016 | Goiânia/GO

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