tdc2016sp - por dentro do .net core
TRANSCRIPT
Globalcode – Open4education
Por dentro do .NET Core
Giovanni [email protected]
@giovannibassi
Trilha .NET
Globalcode – Open4education
UNIVERSAL WINDOWS PLATFORMDesenvolvimento unificado em todos
os dispositivos Windows
XAMARINQualquer dispositivo
.NET COREMulti-plataforma, alto desempenho
ASP.NET COREFramework otimizado para a nuvem
EXPERIÊNCIAS EM
DISPOSITIVOS
MODERNOS
EXPERIÊNCIAS EM
NUVENS MODERNAS
Framework multi-propósito, abrangente,
para desktop e aplicações web
.NET FRAMEWORK
Momento interessantíssimo para ser um desenvolvedor .NET
Globalcode – Open4education
.NET FRAMEWORK
Plataforma para aplicações .NET no
Windows
.NET CORE
Framework multi-plataforma e open
source otimizado para apps modernas e
workflow de desenvolvimento
XAMARIN
Ambiente de execução multi-plataforma, open source, e baseado em Mono para iOS, OS X, e
Android
Distribuído com o Windows
Distribuído com a app
Distribuído com a app
.NET ontem e hoje
Globalcode – Open4education
.NET FRAMEWORK .NET CORE XAMARIN
APP
MOD
ELS
BASE
LIBR
ARIE
S
Base Class Library Core Library Mono Class Library
ASP.NET
Windows FormsWPF UWP
ASP.NET Core
iOSAndroid
Compilers Languages Runtime components
INFRAESTRUCTURA COMUM
OS X
.NET hoje – modelos de apps e bibliotecas
Globalcode – Open4education
.NET Core
Multi-plataforma
Unificada
Globalcode – Open4education
.NET Core
Rápida
Leve
Globalcode – Open4education
.NET Core
Moderna
Open Source
Globalcode – Open4education
Plataformas de execução
Globalcode – Open4education
Executável .NET até ante-ontem
Executável contém todo o ILWindows alterado para entender um executável .NET em 2002Executável auto contido, inicia o CLR, que compila JIT a IL e executa
Exemplo: ConsoleApp.exe
Globalcode – Open4education
Outros executáveis e .NET Core
Java: java -jar whatever.jarNode: node app.jsRuby: ruby app.rbC++: app.NET: appMono: mono ConsoleApp.exe.NET Core:
dotnet c:\app\ConsoleApp.exedotnet c:\app\ConsoleApp.dlldotnet c:\app\
Globalcode – Open4education
.NET CLI
Nova plataforma de execução do .NETMulti platformaResponsável por fazer o bootstrap da aplicação (runtime, etc)Também possui as ferramentas necessárias ao desenvolvimentoAinda em preview
Globalcode – Open4education
DemoExecutando uma aplicação .NET Core
Globalcode – Open4education
.NET FRAMEWORK .NET CORE XAMARIN
APP
MOD
ELS
BASE
LIBR
ARIE
S
Compilers Languages Runtime components
INFRAESTRUTURA COMUM
PCL reference assemblies
Implementaçãode
referência
Meu código
Implementation 3Implementation
2Implementation 1
.NET ontem – reutilizando código
Globalcode – Open4education
• Precisa implementar uma vez para cada plataforma• Precisa se alinhar com as releases da plataforma (por
exemplo, Windows para o .NET Framework)
• APIs principais não estão presentes em todas as plataformas
• Implementação diferente por plataforma• Apenas um pequeno MDC para rodar• Precisa conhecer diversas BCLs diferentes
.NET ontem - desafios
Desenvolvedores
Plataformas
Globalcode – Open4education
.NET hoje
.NET FRAMEWORK .NET CORE XAMARIN
.NET STANDARD LIBRARYUma biblioteca única
ASP.NET
Windows FormsWPF UWP
ASP.NET Core*
iOSAndroid
Compilers Languages Runtime components
INFRAESTRUTURA COMUM
OS X
Globalcode – Open4education
.NET hoje – reutilizando código
.NET FRAMEWORK .NET CORE XAMARIN
Compilers Languages Runtime components
INFRAESTRUTURA COMUM
My codeFull implementations
Reference implementations
Globalcode – Open4education
• .NET Standard pode crescer sem dependência de atualização de cada plataforma
• Inovação rápida nas bibliotecas, Infraestrutura comum, e ferramental
• Mesmas APIs em todas as plataformas• Foco em uma biblioteca, em vez de diversas plataformas• Sem MDC, grande superfície de APIs disponível
.NET standard libraries - vantagens
Desenvolvedores
Plataformas
Globalcode – Open4education
Versões do .NET StandardPlatform Name Alias
.NET Standard netstandard 1.0 1.1 1.2 1.3 1.4 1.5 1.6
.NET Core netcoreapp → → → → → → 1.0
.NET Framework net → 4.5 4.5.1 4.6 4.6.1 4.6.2 4.6.3
Mono/Xamarin Platforms → → → → → → *
Universal Windows Platform uap → → → → 10.0
Windows win → 8.0 8.1
Windows Phone wpa → → 8.1
Windows Phone Silverlight wp 8.0
https://docs.microsoft.com/en-us/dotnet/articles/standard/library
Globalcode – Open4education
Inovação futura do .NET
.NET FRAMEWORK .NET CORE XAMARIN
.NET STANDARD LIBRARYUma biblioteca única
ASP.NET
Windows FormsWPF UWP
ASP.NET Core*
iOSAndroid
Compilers Languages Runtime components
INFRAESTRUTURA COMUM
OS XInov
ação
no
Mod
elo
de
App
Inov
ação
no
.NET
FERRAMENTAL
Visual Studio
Visual StudioCode
Globalcode – Open4education
Nuget, PCLs, TFMs
Globalcode – Open4education
História: 2010: #ifdefs
Globalcode – Open4education
História: 2011: PCLs
Globalcode – Open4education
Contract Assemblies
System.String
System.dll System.String
System.Runtime.dll
System.String
mscorlib.dll
Fonte.cs
Silverlight
.NET 4.5.1
Globalcode – Open4education
Contract Assemblies
Profile1
Profile2Profile3
Profile259 = portable-net45+netcore45+wpa81+wp8TFM
Globalcode – Open4education
O problema do .NET que não existe mais
Impossível manter todos os TFMs suportadosNovas plataformas não ativam automaticamenteExplosão combinatóriaDiferença entre contratos e plataformas problemáticos
Globalcode – Open4education
.NET Standard
Suporte no Nuget v3Não utiliza plataformas para definir dependênciasContratos e TFMs definem dependências
TFM especial <3: “netstandard”“Verifique minhas dependências, rodarei nas plataformas que elas suportam”De “quais plataformas suporto” para “quais minhas dependências”Package.config (xml) => Project.json (vai mudar)
Globalcode – Open4education
DemoInspecionando uma biblioteca baseada no .NET Standard
Globalcode – Open4education
Conclusões
.NET Core + .NET CLI é uma nova opçãoTem potencial de continuar crescendoBase do novo ASP.NETCiclo rápido de desenvolvimentoMais leve, melhor desempenhoOportunidades novasFunciona com Docker e XPlat
http://dot.net