Post on 10-Jan-2017
.Net Core InternalsO que é o .NET Platform Standard?
INTELIGÊNCIA E INOVAÇÃO EM
DESENVOLVIMENTO DE SOFTWARE
www.lambda3.com.br
Victor CavalcanteDesenvolvedor
@vcavalcantevictor@cavalcante.net
INTELIGÊNCIA E INOVAÇÃO EM
DESENVOLVIMENTO DE SOFTWARE
www.lambda3.com.br
O .Net mudou e ficou melhorUNIVERSAL WINDOWS PLATFORM
Desenvolvimento unificado para dispositivos com windows
XAMARINExtenda o alcance para todos os
dispositivos com .NET.NET CORE
Cross-platform, high performance .NET
ASP.NET CORECloud optimized framework
para micro services
MODERN DEVICE
EXPERIENCES
MODERN CLOUD
EXPERIENCES
.NET FRAMEWORK
.NET CORE
Cross-platform e open source otimizada para
necessidade de aplicações modernas e
fluxos de desenvolvimento
XAMARIN
Cross-platform e open source baseada no Mono runtime para iOS, OS X, e
dispositivosAndroid
.NET hoje já está maior .NET FRAMEWORK
Platforma para aplicações .NET
no Windows
Distribuído com o Windows
Distribuído com o aplicativo
Distribuído com o aplicativo
.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
COMMON INFRASTRUCTURE
OS X
.NET “modelo antigo”—app models e bibliotecas
.NET FRAMEWORK .NET CORE XAMARIN
APP
MOD
ELS
BASE
LIBR
ARIE
S
Compilers Languages Runtime components
COMMON INFRASTRUCTURE
PCL reference assemblies
Reference implementati
on
Meu código
Implementation 3Implementation
2Implementation 1
.NET “modelo antigo”—reutilização de código
• APIs chaves não estão presentes em todas as plataformas• Implementações diferentes em cada plataforma• É necessário limitar ao minimo denominador comum
Desenvolvedores
.NET modelo antigo—desafios
.NET modelo novo .NET FRAMEWORK .NET CORE XAMARIN
.NET STANDARD LIBRARYOne library to rule them all
Uma biblioteca para a todos governar
ASP.NET
Windows FormsWPF UWP
ASP.NET Core*
iOSAndroid
Compilers Languages Runtime components
COMMON INFRASTRUCTURE
OS X
.NET modelo novo—reutilização de código
.NET FRAMEWORK .NET CORE XAMARIN
Compilers Languages Runtime components
COMMON INFRASTRUCTURE
Meu códigoFull implementations
Reference implementations
• Mesma API dispnível em todas as plataformas• Dominar uma biblioteca não uma plataforma• Big surface area—no small common denominator
.NET standard libraries— vantagens
Desenvolvedores
.NET Futuras inovações .NET FRAMEWORK .NET CORE XAMARIN
.NET STANDARD LIBRARYOne library to rule them all
ASP.NET
Windows FormsWPF UWP
ASP.NET Core*
iOSAndroid
Compilers Languages Runtime components
COMMON INFRASTRUCTURE
OS XApp
Mod
el
Inno
vatio
n.N
ET In
nova
tion
TOOLS
Visual Studio
Visual StudioCode
Developed in the open
Fully open development processOpen SourceOpen to community contributionsOpen process: roadmap, design docs, standups…+ Great community momentum175 repositories24,061 forks4,297 contributors
http://dotnet.github.io
Para ter uma garantia da portabilidade dos binários
para as futuras plataformas capazes de rodar .NET,
é necessário um versionamento mais fácil
de entender.
.NET Platform Standard
Sim!
.NET Platform Standard é o substituo da PCL?
Um pouco de história: 2010 - #ifdef
Um pouco de história: 2011 - PCL
Contract assemblies
Contract assemblies
• Impossível manter todos os TFMs suportados ao longo do tempo
• Novas plataformas não ativam automaticamente• Explosão combinatória
Problemas?
“Verifique minhas dependências, rodarei nas plataformas que elas suportam”
Solução: novo mindset
De “quais plataformas suporto”
para “quais minhas dependências”
.NET Platform Standard to platforms
.NET Platform Standard to platforms
Targets .NET Platform Standard version 1.1
• .NET Core (netcoreapp) • .NET Framework 4.5 or later• Universal Windows Platform 10 (UWP) • Windows 8.0• Windwos Phone (wpa)• Mono/Xamarin platforms• Mono
.NET Platform Standard to platforms
Targets .NET Platform Standard version 1.3
• .NET Framework 4.6 or later, • .NET Core (netcoreapp) • Universal Windows Platform 10 (UWP) • Mono/Xamarin platforms
.NET Platform Standard to platforms
Targets .NET Platform Standard version 1.3
• .NET Framework 4.6.1 or later, • .NET Core (netcoreapp) • Universal Windows Platform 10 (UWP) • Mono/Xamarin platforms
NuGet identifierPlatform NuGet identifier.NET Framework 2.0 - 4.6 net20 - net46.NET Core netcoreapp
.NET Micro Framework netmf
Windows 8 win8, netcore45Windows 8.1 win8, netcore451
Windows Phone Silverlight (8, 8.1) wp8, wp81
Windows Phone 8.1 wpa8.1
Universal Windows Platform 10 uap10, netcore50
Silverlight 4, 5 sl4, sl5
Platform Nuget IdentifierMonoTouch MonoTouch
MonoMac monomac
Xamarin iOS xamarinios
Xamarin PlayStation 3 xamarinpsthree
Xamarin PlayStation 4 xamarinpsfour
Xamarin PlayStation Vita xamarinpsvita
Xamarin Watch OS xamarinwatchos
Xamarin TV OS xamarintvos
Xamarin Xbox 360 xamarinxboxthreesixty
Xamarin Xbox One xamarinxboxone
.NET Core CLI extensibility model
2 formas diferentes• Por nuget
• new• restore• run• build• test• publish• pack
• Por system path
• Divididos em 3 partes• Driver
• dotnet• Verbo
• O comando• Parametros
.NET Core CLI extensibility model
.NET Core roadmap
.NET Core roadmap
.NET OS roadmap
Metas do .NET Core
• Estar disponível em diversos sistemas operacionais e arquiteturas de processadores.
• Ter um desempenho competitivo sendo altamente confiável.• Setup muito fácil para desenvolvimento.• Produtividade na criação de aplicativos com suporte da
documentação, amostras e componentes.
• Reflete a mudança cultural da Microsoft• O Ecossistema ainda está imaturo• A comunidade também está imatura• Ainda faltam pacotes importantes
• Como em qualquer projeto open source
• Persistência ainda é um desafio• O futuro é muito promissor• A portabilidade é fundamental para o futuro da plataforma
Impressões
Obrigado! Dúvidas?
Avenida Angélica, 2318, Cj. 11 | Consolação - São Paulo - SP11 2386.1886 | contato@lambda3.com.br
www.lambda3.com.br
Victor Cavalcante @vcavalcante