ASP.NET vNext – MVC6

26
ASP.NET vNext – MVC6 Mailson de Queiroz Proença

Transcript of ASP.NET vNext – MVC6

Page 1: ASP.NET vNext – MVC6

ASP.NET vNext – MVC6Mailson de Queiroz Proença

Page 2: ASP.NET vNext – MVC6

Agenda

Breve história do Asp.NET;

Dependência do System.Web;

Algumas soluções implementadas;

Motivição para o desenvolvimento do vNext;

O novo ASP.NET (vNext):

Vantagens;

Componentes e Comandos;

Exemplos;

Conclusão.

Page 3: ASP.NET vNext – MVC6

ASP.NET – Um pouco de sua história

Primeira versão em 2002 junto do .NET Framework 1.0;

Utiliza-se C# ou VB.NET;

Desenvolvido para rodar no IIS;

Vários conceitos em um único pacote (System.WEB):

Session;

Cache;

WebForms;

Controls.

Page 4: ASP.NET vNext – MVC6

System.Web

Um projeto MVC vazio já vem com vários

arquivos;

Você tem que “pagar” por algo que não

quer ou não precisa;

Page 5: ASP.NET vNext – MVC6

ASP.NET – Um pouco de sua história

O ASP.NET(System.Web) é entregue como parte do .NET

Framework;

Ciclo de atualizações lentas;

Os recursos do ASP.NET cresceram, aumentando o

tamanho e complexidade do System.Web;

Isso ocasiona aumento no consumo de recursos para o

ASP.NET rodar;

Uma única opção de host – O IIS.

Page 6: ASP.NET vNext – MVC6

Soluções

2007 – 2008: foi introduzido o framework MVC ao

ASP.NET:

O MVC é distribuído separadamente, aumentando a entrega

de atualizações;

2012 – 2013: foi lançado o ASP.NET Web API e ASP.NET SignaIR:

Escrito sem nenhuma dependência com o System.Web;

Possui capacidade de Self-Hosting(Independente de IIS).

Page 7: ASP.NET vNext – MVC6

Motivação para desenvolvimento do vNext

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

gigantesco;

Isso impacta desempenho;

No vNext pode-se escolher o que vai ser utilizado;

Page 8: ASP.NET vNext – MVC6

O novo ASP.NET (vNext)

Ainda em desenvolvimento;

ASP.NET MVC, ASP.NET Web Forms e Web API agora é um só, chamado

MVC 6;

Acabou a depedência do System.Web;

Ciclo de desenvolvimento rápido;

Escolha seu editores e ferramentas;

Cógido aberto com contribuições externas (disponível no GitHub);

Maior portabilidade:

não existe depedência de assemblies, facilitando o deploy em nuvem e em

ambientes não Windows;

Page 9: ASP.NET vNext – MVC6

O novo ASP.NET (vNext)

Possibilidade de hospedar sua aplicação no IIS ou em um

processo self hosted;

Voltado para ambiente Cloud Computing;

Suporte ao legado do MVC 5, Web API 2, Web Page 3,

SignaIR 2 e EF 6;

Baixíssimo consumo de memória;

Completamente multiplataforma! Rode ASP.NET onde

quiser!

Compatível com Mac OS e Linux através do projeto Mono.

Page 10: ASP.NET vNext – MVC6

O novo ASP.NET (vNext)

Oferece suporte a gerenciadores de pacotes:

GruntJS: é uma ferramenta que tem como objetivo automatizar

tarefas, principalmente com Javascript.

Bower: gerenciar componentes de front-end;

NPM(Node Package Manager): gerenciador de Pacotes do Node.JS.

Page 11: ASP.NET vNext – MVC6

Componentes / Comandos do ASP.NET

(vNext)

Kruntime: é um SDK que contém todos os binários necessários para

compilação e execução da aplicação;

KVM - K Version Manager: Script Powershell responsável por gerenciar

as versões do KRE em seu ambiente;

KRE - K Runtime Environment: Runtime responsável por compilar e

rodar sua aplicação;

KPM - K Package Manager: Gerenciador de pacotes, este comando

instala os pacotes necessários para rodar sua aplicação dentro da

versão do runtime que está sendo utilizado;

K – Command: Utilize o commando K para rodar as aplicações (K run, K

web, etc.

Page 12: ASP.NET vNext – MVC6

KVM

List: lista os KREs disponíveis;

Upgrade: instala a última versão do KRE

Padrão é não usar o cloud optimized

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

Install: instala uma versão específica do KRE;

Use: escolhe uma versão;

Page 13: ASP.NET vNext – MVC6

KPM

Restore: restaura os pacotes, colocando-os em

$HOME/.kpm/packages;

Pack: prepara a aplicação para deploy (mas não compila);

Build: compila o projeto e gera a dll e o nupkg;

Add: adiciona uma dependência ao projeto;

Page 14: ASP.NET vNext – MVC6

K

run: executa uma aplicação console;

web: executa aplicação Web e aplicação MVC (Windows);

kestrel: compila e executa a aplicação Web;

Page 15: ASP.NET vNext – MVC6

Project.json

Dependências

{

"dependencies": {

"Kestrel": "1.0.0-beta4", "Microsoft.AspNet.ConfigurationModel": “1.0.0-beta-*"}

}

Page 16: ASP.NET vNext – MVC6

Project.json

Commands

{

"commands": {

"kestrel": "Microsoft.AspNet.Hosting --server Kestrel --server.urls http://localhost:5004",

"web": "Microsoft.AspNet.Hostingserver.name=Microsoft.AspNet.Server.WebListenerserver.urls=http://localhost:5001",

"test": "Xunit.KRunner"

}

}

Page 17: ASP.NET vNext – MVC6

Project.json

Configurações{

"configurations": {

"Debug": {

"compilationOptions": {

"define": ["DEBUG", "TRACE"],

"debugSymbols": true

}

},

"Release": {

"compilationOptions": {

"define": ["RELEASE", "TRACE"],

"optimize": true,

"debugSymbols": false

}

}

}

}

Page 18: ASP.NET vNext – MVC6

Project.json

Frameworks

{

"frameworks": {

“dnx451": {},

“dnxcore50": {

"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",

}

}

}

}

Page 19: ASP.NET vNext – MVC6

Project.json

Sources

{

"code": "*.cs",

"exclude": "buggy/**/*.cs",

"resources": "embed/**/*.*"

}

Page 20: ASP.NET vNext – MVC6

Project.json

Scripts

{

"scripts": {

"postrestore": [

"npm install",

"bower install"

],

"prepare": [

"gulp copy"

] }

}

Page 21: ASP.NET vNext – MVC6

Startup.cs

Classe de inicialização do projeto;

Deve conter o método Configure:

onde deve ser feita toda configuração do pipeline HTTP.

public class Startup{

public void Configure(IApplicationBuilder app)

{

app.UseServices(services => services.AddMvc());

app.UseMvc();

}

}

Page 22: ASP.NET vNext – MVC6

Cadê o Web.Config?

Você pode ter outros tipos de arquivo de config

Web.Config

Config.ini

Config.json;

Tudo depende do Configuration Model escolhido

Por padrão é o

Microsoft.Framework.ConfigurationModel.Json

Page 23: ASP.NET vNext – MVC6

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

O código que vai rodar é .cs;

Você ainda pode pré-compilar;

Deploy muito facilitado:

kpm pack;

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

aplicação;

As dependências são pacotes (Nuget), não dlls.

Page 24: ASP.NET vNext – MVC6

Servidor web

IIS funciona;

Self host;

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

Nodejs)

Suporte a outros servidores são esperados:

Apache;

Devices menores agora podem rodar (roteadores wifi, modem,

RaspberryPi, carros, etc).

Page 25: ASP.NET vNext – MVC6

Exemplo prático

Page 26: ASP.NET vNext – MVC6

Referências

http://www.asp.net/vnext

http://www.devmedia.com.br/novidades-do-asp-net-vnext-e-do-visual-studio/31166

http://eduardopires.net.br/2014/05/o-futuro-do-asp-net-vnext-mvc-6/

https://blog.lambda3.com.br/2014/05/asp-net-vnext-impresses-iniciais/

http://docs.asp.net/en/latest/conceptual-overview/aspnet.html

http://www.theregister.co.uk/2015/02/24/now_with_grunt_and_gulp_aspnet_goes_crossplatform_in_new_visual_studio_2015_preview/

http://stephenwalther.com/archive/2015/01/12/asp-net-5-and-angularjs-part-1-configuring-grunt-uglify-and-angularjs

http://stephenwalther.com/archive/2015/02/24/top-10-changes-in-asp-net-5-and-mvc-6

https://github.com/aspnet/home

http://xunit.github.io/docs/getting-started-aspnet.html

http://www.hanselman.com/blog/ASPNET5VNextWorkInProgressExploringTagHelpers.aspx