ASP.NET Core, .NET Core e EF Core: multiplataforma e otimizados para a nuvem
-
Upload
rogerio-moraes-de-carvalho -
Category
Technology
-
view
2.202 -
download
0
Transcript of 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
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
Global Azure Bootcamp 2016 - Brasília #gabbsb2016
Visão geral da plataforma .NET
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
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”)
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
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.
Global Azure Bootcamp 2016 - Brasília #gabbsb2016
.NET Core
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
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
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
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
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
Global Azure Bootcamp 2016 - Brasília #gabbsb2016
Entity Framework Core
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
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
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
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
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
Global Azure Bootcamp 2016 - Brasília #gabbsb2016
ASP.NET Core
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
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
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
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
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)
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
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
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
Global Azure Bootcamp 2016 - Brasília #gabbsb2016
Futuro e recursos para estudo
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
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