ASP.NET vNext no .NET Architects Days 2014

Post on 15-Dec-2014

461 views 2 download

Tags:

description

Palestra ministrada no DNAD 2014.

Transcript of ASP.NET vNext no .NET Architects Days 2014

Globalcode – Open4education

ASP.NET vNext

Giovanni Bassi

giovanni@lambda3.com.br

@giovannibassi

Victor Cavalcante

victor@cavalcante.net

@vcavalcante

@VCavalcante

@GiovanniBassi

Globalcode – Open4education

História

2002 – Lançado ASP.NET e WebFormsFoco: trazer o desenvolvedor VB6 pra web

Desenvolvedores web de verdade choram ou tiram sarro do WebForms

2004 – Lançado JSF seguindo ideia muito semelhante ao WebForms

2004 – Primeira versão do Ruby on Rails

2005 – Victor já avisava todo mundo sobre o que a Web era e o que não era

e criticava o WebForms

Globalcode – Open4education

História

~2005/2006 – Lançado MonoRail (Rails pra .NET)

2007 – Nasce SilverlightE Microsoft desiste do HTML

12/2007 – CTP do ASP.NET MVCE Microsoft volta pro HTML \o/

2008 – Criado .NET ArchitectsDiscussões homéricas sobre Silverlight, WebForms e MVC

(E DDD. O tempo todo. E repositórios. Sim, desde 2008.)

2009 – 1.0 do ASP.NET MVC

2009 – Lançado NodeJS

Globalcode – Open4education

História

2011 – Última versão do Silverlight

2012 – SPA, SPA, SPA, SPA!

2012 – Palestra sobre “Nova Web” no DNADNós avisamos!

Final de 2013 – Começa desenvolvimento do ASP.NET vNext

2014 – ASP.NET vNext aberto a público

2015 – Lançamento do ASP.NET vNext?

Globalcode – Open4education

Dúvidas comuns

Muda alguma coisa na arquitetura?

Cadê o WebForms? <o>

Se não tem dll quer dizer que é interpretado?

Vai ficar mais lento?

Vou ter que codar na linha de comando?

Vou conseguir migrar meus projetos?

A Microsoft me abandonou?

Globalcode – Open4education

ASP.NET vNext e a web moderna

Totalmente modular

Ciclo de desenvolvimento rápido

Transição transparente entre nuvem e on-premises

Escolha seus editores e ferramentas

Código aberto com contribuições externas

Cross-Platform

Rápido

Faster Development Cycle

Globalcode – Open4education

Platform Framework Tools

Providing the best end-to-end development experience…

…on your terms

…or bring your own …or bring your own …or bring your own

ASP.NET vNext - Resumo

Globalcode – Open4education

MVC6Web Pages

HTML Helpers

Web Api

Controllers

Actions

Filters

Model Biding

DI

Frameworks Web Hoje

ASP.NET MVC 5

HTML Helpers

Controllers

Actions

Filters

Model Biding

DI

RazorRazor

ASP.NET vNext

ASP.NET MVC 6

Globalcode – Open4education

Pague pelo que usar

A versão atual do ASP.NET te obriga a passar por um pipeline gigantesco

Isso impacta desempenho

No vNext você vai escolher o que vai usar, e o que não for carregado não traz overhead

Você sabia que o IIS é um dos servidores web mais rápidos do mercado?

Globalcode – Open4education

Globalcode – Open4education

Windows 7 ou maiorWindows Server 2008 R2 +NET 4.5.1 for hosting in IIS

Mono >= 3.41 https://github.com/mono/mono

github.com/aspnet/home

Globalcode – Open4education

Uma conversa no Jabbr.net

- Esse “vNext” é do .NET ou do ASP.NET?- É do ASP.NET.- Mas tem uma app console lá. Console, não é

ASP.NET!- Porque não?- Ok, você venceu.

Globalcode – Open4education

Diferenças fundamentais

Globalcode – Open4education

Sem WebForms!

Globalcode – Open4education

Diferenças fundamentais

Assemblies em disco opcionais

Sem WebForms

Diferenças no framework,quebra de compatibilidade em APIs

Linha de comando é um cenário 100% funcional

Evolução independente do Windows Server e do .NET Framework

100% testável

100% portável

Globalcode – Open4education

KRE

Globalcode – Open4education

Estrutura do KRE

Onde fica?%USERPROFILE%\.kre

O que tem lá?

Globalcode – Open4education

Otimizado para a nuvem

Globalcode – Open4education

ASP.NET vNext - Resumo

Feature ASP.NET vNext

ASP.NET vNext (Cloud Optimized)

Cloud Ready * *

Design Modular * *

Injeção de Dependência * *

Tracing / Debugging Consistente * *

Desenvolvimento Rápido (Sem o passo de build) * *

Open Source * *

Full Side by Side (framework deployed inside application) *

Fast startup, Low memory / High throughput (best of class) *

MVC, Web API, Web Pages 6, SignalR 3, EF 7

Globalcode – Open4education

Command Line

KÉ a comando de entrada para o runtime

KVMÉ o gerenciador de versão, ele é o responsável por manter várias versões ao mesmo tempo.

KPMÉ o gerenciador de pacotes, ele é o responsável por instalar pacotes e empacotar sua aplicação

Globalcode – Open4education

KVM

listLista os KREs disponíveis

upgradeInstala a última versão do KRE

Padrão é não usar o cloud optimized

Já deixa essa versão como sendo a padrão

installInstala uma versão específica do KRE

useEscolhe uma versão

Globalcode – Open4education

KPM

restoreRestaura seus pacotes

Pacotes vão parar em $HOME/.kpm/packages

packPrepara a aplicação pra deploy (mas não compila)

buildCompila o projeto e gera a dll e o nupkg (para k10 e net45)

addAdiciona uma dependência ao projeto

Globalcode – Open4education

Onde ficam os pacotes do KPM?

$HOME/.kpm/packages

Globalcode – Open4education

DemoHello World – Console

Globalcode – Open4education

Anatomia

Globalcode – Open4education

DemoHello World – Visual Studio

Globalcode – Open4education

Project.json

Dependências

{ "dependencies": { "Microsoft.AspNet.ConfigurationModel": "0.1-alpha-*", "SomeProject": "" }}

Globalcode – Open4education

Project.json

Configurações{ "configurations": { "Debug": { "compilationOptions": { "define": ["DEBUG", "TRACE"], "debugSymbols": true } }, "Release": { "compilationOptions": { "define": ["RELEASE", "TRACE"], "optimize": true, "debugSymbols": false } } }}

Globalcode – Open4education

Project.json

Frameworks{ "frameworks": { "net45": {}, "k10": { "dependencies": { "System.Collections": "4.0.0.0", "System.Collections.Concurrent": "4.0.0.0", "System.ComponentModel": "4.0.0.0", "System.Linq": "4.0.0.0", "System.Reflection": "4.0.10.0",

} } }}

Globalcode – Open4education

Project.json

Sources

{ "code": "*.cs", "exclude": "buggy/**/*.cs", "resources": "embed/**/*.*"}

Globalcode – Open4education

Project.json

Commands

{ "commands": { "web": "Microsoft.AspNet.Hosting

server.name=Microsoft.AspNet.Server.WebListener

server.urls=http://localhost:5001", "test": "Xunit.KRunner" }}

Globalcode – Open4education

Project.json

Scripts{ "scripts": { "prebuild": "echo before building", "postbuild": "echo before building", "prepack": "echo before packing", "postpack": "echo after packing", "prerestore": "echo before restoring packages", "postrestore": "echo restoring packages" }}

Globalcode – Open4education

Cadê o Web.Config?

Você pode ter outros tipos de arquivo de configWeb.Config

Config.ini

Config.json

Tudo depende do Configuration Model escolhidoPor padrão é o Microsoft.Framework.ConfigurationModel.Json

Globalcode – Open4education

Compilação em memória

Globalcode – Open4education

Deploy do runtime e framework com a sua

aplicação.

Globalcode – Open4education

Nuget FTW!

Globalcode – Open4education

Impactos na arquitetura(porque isso aqui é um evento de arquitetura)

Globalcode – Open4education

Globalcode – Open4education

O que roda sua aplicação não é uma dll

O código que vai rodar é .cs ou .vb

Você ainda pode precompilar

Deploy muito facilitadokpm pack

xcopy

Dependências locais, tudo que vai rodar está no diretório da aplicação

As dependências são nupkgs, não dlls

Globalcode – Open4education

Servidor web

IIS funciona

Suporte a outros servidores são esperadosSelf host

Kestrel (self host feito pela Microsoft baseado em libuv – o mesmo do Nodejs)

Nginx

Apache

Devices menores agora podem rodar (roteadores wifi, modem, RaspberryPi, IoT, carros, etc)

Globalcode – Open4education

POCO Controllers

Controllers não precisam mais herdar de uma classe base

Colaboram com interfaces que recebem via DI

100% testáveis

Muda bastante

E não muda quase nada

Globalcode – Open4education

Globalcode – Open4education

Projetos no .NET Foundation

ASP.NET MVC

ASP.NET SignalR

ASP.NET vNext

ASP.NET Web Pages

ASP.NET Web API

Composition (MEF2)

Couchbase for .NET

Entity Framework

Linq to Hive

Mailkit

Mimekit

MEF

MVVM Light Toolkit

.NET API for Hadoop WebClient

.NET Compiler Platform ("Roslyn")

.NET Map Reduce API for Hadoop

.NET Micro Framework

Open XML SDK

OWIN Authentication Middleware

Web Protection Library

Windows Azure .NET SDK

Windows Phone Toolkit

Salesforce Toolkits for .NET

System.Drawing

Xamarin.Auth

Xamarin.Mobile

Globalcode – Open4education

Mais recursos

Home: http://asp.net/vnext

Repositório principal: https://github.com/aspnet/Home

Controle de projeto: http://huboard.com/aspnet/kruntime

Sala de chat: https://jabbr.net/#/rooms/AspNetvNext

Podcast Tecnoretórica:http://bit.ly/aspnetvnextpodcast1http://bit.ly/aspnetvnextpodcast2

ASP.NET vNext no blog da Lambda3:http://bit.ly/aspnetvnextlambda3

Globalcode – Open4education

Obrigado!Giovanni Bassi

giovanni@lambda3.com.br

@giovannibassi

Victor Cavalcante

victor@cavalcante.net

@vcavalcante