tdc2016sp - por dentro do .net core

31
Globalcode – Open4education Por dentro do .NET Core Giovanni Bassi [email protected] @giovannibassi Trilha .NET

Upload: tdc-globalcode

Post on 15-Apr-2017

108 views

Category:

Education


5 download

TRANSCRIPT

Page 1: TDC2016SP - Por dentro do .Net Core

Globalcode – Open4education

Por dentro do .NET Core

Giovanni [email protected]

@giovannibassi

Trilha .NET

Page 2: TDC2016SP - Por dentro do .Net Core
Page 3: TDC2016SP - Por dentro do .Net Core
Page 4: TDC2016SP - Por dentro do .Net Core

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

Page 5: TDC2016SP - Por dentro do .Net Core

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

Page 6: TDC2016SP - Por dentro do .Net Core

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

Page 7: TDC2016SP - Por dentro do .Net Core

Globalcode – Open4education

.NET Core

Multi-plataforma

Unificada

Page 8: TDC2016SP - Por dentro do .Net Core

Globalcode – Open4education

.NET Core

Rápida

Leve

Page 9: TDC2016SP - Por dentro do .Net Core

Globalcode – Open4education

.NET Core

Moderna

Open Source

Page 10: TDC2016SP - Por dentro do .Net Core

Globalcode – Open4education

Plataformas de execução

Page 11: TDC2016SP - Por dentro do .Net Core

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

Page 12: TDC2016SP - Por dentro do .Net Core

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\

Page 13: TDC2016SP - Por dentro do .Net Core

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

Page 14: TDC2016SP - Por dentro do .Net Core

Globalcode – Open4education

DemoExecutando uma aplicação .NET Core

Page 15: TDC2016SP - Por dentro do .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

Page 16: TDC2016SP - Por dentro do .Net Core

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

Page 17: TDC2016SP - Por dentro do .Net Core

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

Page 18: TDC2016SP - Por dentro do .Net Core

Globalcode – Open4education

.NET hoje – reutilizando código

.NET FRAMEWORK .NET CORE XAMARIN

Compilers Languages Runtime components

INFRAESTRUTURA COMUM

My codeFull implementations

Reference implementations

Page 19: TDC2016SP - Por dentro do .Net Core

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

Page 20: TDC2016SP - Por dentro do .Net Core

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

Page 21: TDC2016SP - Por dentro do .Net Core

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

Page 22: TDC2016SP - Por dentro do .Net Core

Globalcode – Open4education

Nuget, PCLs, TFMs

Page 23: TDC2016SP - Por dentro do .Net Core

Globalcode – Open4education

História: 2010: #ifdefs

Page 24: TDC2016SP - Por dentro do .Net Core

Globalcode – Open4education

História: 2011: PCLs

Page 25: TDC2016SP - Por dentro do .Net Core

Globalcode – Open4education

Contract Assemblies

System.String

System.dll System.String

System.Runtime.dll

System.String

mscorlib.dll

Fonte.cs

Silverlight

.NET 4.5.1

Page 26: TDC2016SP - Por dentro do .Net Core

Globalcode – Open4education

Contract Assemblies

Profile1

Profile2Profile3

Profile259 = portable-net45+netcore45+wpa81+wp8TFM

Page 27: TDC2016SP - Por dentro do .Net Core

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

Page 28: TDC2016SP - Por dentro do .Net Core

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)

Page 29: TDC2016SP - Por dentro do .Net Core

Globalcode – Open4education

DemoInspecionando uma biblioteca baseada no .NET Standard

Page 30: TDC2016SP - Por dentro do .Net Core

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

Page 31: TDC2016SP - Por dentro do .Net Core

Globalcode – Open4education

Obrigado!Giovanni Bassi

[email protected]@giovannibassi