ASP.NET vNext – MVC6
Mailson de Queiroz Proença
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.
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.
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;
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.
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).
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;
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;
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.
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.
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.
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;
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;
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;
Project.json
 Dependências
{
"dependencies": {
"Kestrel": "1.0.0-beta4",
"Microsoft.AspNet.ConfigurationModel": “1.0.0-beta-*"}
}
Project.json
 Commands
{
"commands": {
"kestrel": "Microsoft.AspNet.Hosting --server Kestrel --
server.urls http://localhost:5004",
"web": "Microsoft.AspNet.Hosting
server.name=Microsoft.AspNet.Server.WebListener
server.urls=http://localhost:5001",
"test": "Xunit.KRunner"
}
}
Project.json
 Configurações
{
"configurations": {
"Debug": {
"compilationOptions": {
"define": ["DEBUG", "TRACE"],
"debugSymbols": true
}
},
"Release": {
"compilationOptions": {
"define": ["RELEASE", "TRACE"],
"optimize": true,
"debugSymbols": false
}
}
}
}
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",
}
}
}
}
Project.json
 Sources
{
"code": "*.cs",
"exclude": "buggy/**/*.cs",
"resources": "embed/**/*.*"
}
Project.json
 Scripts
{
"scripts": {
"postrestore": [
"npm install",
"bower install"
],
"prepare": [
"gulp copy"
] }
}
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();
}
}
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
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.
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).
Exemplo prático
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/ASPNET5VNextWorkInProgressExploringTa
gHelpers.aspx

ASP.NET vNext – MVC6

  • 1.
    ASP.NET vNext –MVC6 Mailson de Queiroz Proença
  • 2.
    Agenda  Breve históriado 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.
  • 3.
    ASP.NET – Umpouco 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.
  • 4.
    System.Web  Um projetoMVC vazio já vem com vários arquivos;  Você tem que “pagar” por algo que não quer ou não precisa;
  • 5.
    ASP.NET – Umpouco 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.
  • 6.
    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).
  • 7.
    Motivação para desenvolvimentodo 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;
  • 8.
    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;
  • 9.
    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.
  • 10.
    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.
  • 11.
    Componentes / Comandosdo 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.
  • 12.
    KVM  List: listaos 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;
  • 13.
    KPM  Restore: restauraos 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;
  • 14.
    K  run: executauma aplicação console;  web: executa aplicação Web e aplicação MVC (Windows);  kestrel: compila e executa a aplicação Web;
  • 15.
    Project.json  Dependências { "dependencies": { "Kestrel":"1.0.0-beta4", "Microsoft.AspNet.ConfigurationModel": “1.0.0-beta-*"} }
  • 16.
    Project.json  Commands { "commands": { "kestrel":"Microsoft.AspNet.Hosting --server Kestrel -- server.urls http://localhost:5004", "web": "Microsoft.AspNet.Hosting server.name=Microsoft.AspNet.Server.WebListener server.urls=http://localhost:5001", "test": "Xunit.KRunner" } }
  • 17.
    Project.json  Configurações { "configurations": { "Debug":{ "compilationOptions": { "define": ["DEBUG", "TRACE"], "debugSymbols": true } }, "Release": { "compilationOptions": { "define": ["RELEASE", "TRACE"], "optimize": true, "debugSymbols": false } } } }
  • 18.
    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", } } } }
  • 19.
    Project.json  Sources { "code": "*.cs", "exclude":"buggy/**/*.cs", "resources": "embed/**/*.*" }
  • 20.
    Project.json  Scripts { "scripts": { "postrestore":[ "npm install", "bower install" ], "prepare": [ "gulp copy" ] } }
  • 21.
    Startup.cs  Classe deinicializaçã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(); } }
  • 22.
    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
  • 23.
    O que rodasua 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.
  • 24.
    Servidor web  IISfunciona;  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).
  • 25.
  • 26.
    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/ASPNET5VNextWorkInProgressExploringTa gHelpers.aspx