Principais mudanças no ASP.NET 5 e MVC 6

Como já postamos aqui, a maior parte do .NET agora é open source e junto com essa novidade estão vindo outras. Pra começar, o ASP.NET foi praticamente reescrito do zero. Sendo assim, essa é a versão mais significativa em toda a história do ASP.NET.

Entre várias mudanças, tentaremos citar as mais importantes até agora.

1- Não teremos mais Visual Basic

ATUALIZAÇÃO: quando escrevemos esse post a Microsoft realmente tinha planos de não mais suportar o VB. Porém, após isso ser noticiado a comunidade de desenvolvedores VB não gostou, fez barulho e conseguiu o que queria: o suporte ao VB foi incluído na nova versão. Você pode ler mais a respeito aqui.

Ainda não é oficial, mas ao que tudo indica(aqui e aqui) é hora de dizer tchau ao VB. O ASP.NET 5 vai suportar somente C#.

Apesar de ainda termos aplicações rodando com VB, a grande maioria que vai desenvolver utilizando ASP.NET hoje em dia prefere o C# mesmo.

O VB serviu ao seu propósito, mas acredito que está na hora de seguirmos em frente com relação à ele.

2- Web Forms perdendo força

Se quiser você poderá desenvolver usando o Web Forms ainda, pois a Microsoft diz que ele não será descontinuado e que continuarão lançando atualizações para o mesmo. Porém, ele não fará parte do ASP.NET 5 e você perderá vários recursos bacanas que virão por aí.

Ou seja, se possível é melhor focar no desenvolvimento com o MVC mesmo.

3- ASP.NET no OSX e Linux

Isso mesmo, agora você que não usa Windows poderá desenvolver aplicações para o ASP.NET no seu Mac ou usando uma distro Linux.

Você não precisará do Visual Studio pra isso e poderá programar usando seu editor favorito. Já existe um projeto open source que dá suporte para o intelisense do C#, o Omnisharp. Ele funciona com Sublime Text, Atom, Emacs, Vim e Brackets.

4- Suporte a Bower, NPM e GruntJS

Pra galera do front-end, essa do Grunt é bacana.
O Grunt é uma ferramenta que tem como objetivo automatizar tarefas, principalmente com Javascript.

Pra poder dar suporte ao Grunt, a Microsoft precisou dar suporte à mais dois gerenciadores de pacotes(além do Nuget): NPM e Bower.

5- AngularJS

O Visual Studio 2015 vai ter templates para a criação de controllers, directives, modules e factories do AngularJS. Com o suporte ao Grunt, o ASP.NET se tornará um ótimo framework server-side pra criar aplicações client-side com o Angular.

6- ASP.NET Dependency Injection Framework

Não precisaremos mais depender de frameworks de injeção de dependência de terceiros como Ninject e AutoFac: o ASP.NET 5 já virá com suporte nativo pra injeção de dependência.

7- xUnit.net

Nas versões anteriores do ASP.NET MVC o framework padrão para testes era o Visual Studio Unit Testing Framework.

O ASP.NET 5 utilizará o xUnit.net. Olhando o repositório do ASP.NET MVC, vemos que ele já está usando o xUnit para testes.

8- Tag Helpers

Esse é bem legal e vai ter um grande impacto na maneira que criamos nossas views no MVC.

Vamos considerar o seguinte código que cria uma view simples para um produto:

@model Caelum.Models.Produto

@using (Html.BeginForm("Salva", "Produto", FormMethod.Post))
{
    <div>
        @Html.LabelFor(p => p.Nome, "Nome:")
        @Html.TextBoxFor(p => p.Nome)
    </div>
    <input type="submit" value="Salva" / >
}

Nesse exemplo os helpers Html.BeginForm, Html.LabelFor, Html.TextBoxFor nos ajudam a criar o formulário. Eles são legais e funcionaram muito bem para nós até agora. O problema com eles é que eles não são familiares para um desenvolvedor front-end: boa parte desses desenvolvedores têm conhecimento somente de HTML, CSS e Javascript e não é confortável com o conceito de métodos. Isso pode mais dificultar o trabalho do que facilitar.

Poderemos fazer isso da mesma forma usando tag helpers:

@model Caelum.Models.Produto
@addtaghelper "Microsoft.AspNet.Mvc.TagHelpers"

<form asp-controller="Produto" asp-action="Salva" method="post">
    <div>
        <label asp-for="Nome">Nome:</label>
        <input asp-for="Nome" />
    </div>

    <input type="submit" value="Salvar" />
</form>

Essa página contém (aparentemente) somente tags HTML. Um desenvolvedor front-end ficaria bem mais confortável com esse código do que com o anterior.

Aqui tem um exemplo do uso de Tag Helpers.

Fontes:
http://www.asp.net/vnext/overview/aspnet-vnext/aspnet-5-overview#webforms
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

19 Comentários

  1. Henrique Mota 10/03/2015 at 14:51 #

    Excelente post. Como sempre o material da Caelum nos ajudando. Sempre muito atualizado.

  2. leandrw 10/03/2015 at 21:32 #

    Empolgadíssimo com essa versão. Config de projeto em JSON ao invés de XML, poder programar de editores como ATOM, VIM e Sublime Text, rodar nas principais plataformas do mercado. Muito coisa boa será escrita em (C|F)# da vida.

  3. Murilo 10/03/2015 at 21:52 #

    Excelente post.

  4. Felipe Bicalho de Mello 11/03/2015 at 10:51 #

    Excelente post, muito interessante as novidades e esperando ansiosamente pelos Tags Helpers

  5. Luiz Henrique Leme 11/03/2015 at 12:37 #

    Gabriel que post é esse?

    Grandes mudanças a Microsoft vem preparando para o ASP .Net MVC, esse post ajuda bastante a conhecer os rumos da plataforma.
    O interessante é que será possível trabalhar em Mac e Linux.
    Ficarei aguardando esse versão para poder apreciar as mudanças.

  6. Jonatan Pimentel 12/03/2015 at 00:51 #

    Excelente post! Muito interessante.

  7. Bruno Rocha Agostinho 25/03/2015 at 12:35 #

    Sou desenvolvedor front-end e estou tento contato agora com o Visual Studio 2013, o objetivo é integrar o time back e front no mesmo projeto (antes era separado). Como o Gabriel disse neste excelente post, não me sinto confortável com os diferentes conceitos de métodos, eu enxergo a semântica do HTML! rs

    Enfim, estou ansioso para o novo ASP.NET e VS2015, uma evolução muito importante para nós front-enders!

    Uma dúvida sobre o novo VS2015: agora com o suporte a NodeJS, alguém sabe se conseguiremos optar por Gulp (ou qualquer outro task runner) além do Grunt?

  8. Gabriel Ferreira 26/03/2015 at 15:23 #

    Bruno, por enquanto aparentemente é só o Grunt mesmo. Mas como ainda não temos uma versão final, pode ser que role mais alguma coisa ainda (:

  9. Paperen 13/05/2015 at 11:03 #

    Hi guys! Recently i wrote a review (here http://writebestessayforme.blogspot.com/ ) for essay writing service i use most often, and i welcome you to evaluate quality of my work 🙂 Please check it out if you want and sorry for possible off-topic )

  10. Paulo Viana 02/06/2015 at 15:39 #

    Bacana d+. Ótimo post. Obrigado

  11. Milton 03/06/2015 at 13:26 #

    Já temos definição quanto à permanência do VB.NET no ASP.NET 5 e MVC 6?
    Pesquisando, em alguns lugares encontro que o ASP.NET 5 terá o suporte ao VB mas não encontro nada na parte do MVC 6 o que me deixa em dúvida.
    Abraço!

  12. Gabriel Ferreira 08/06/2015 at 10:29 #

    Oi Milton!

    Ainda não encontrei nenhuma confirmação sobre isso.

  13. Henrique Santana 26/06/2015 at 00:08 #

    Estou atrasado, rsrs.

    Procurei no google um bom livro para asp.net mvc 5 e vim para aqui. Vou ver se aco um bom livro do 6.
    Vlw pessoal

  14. Marcos Paulo Honorato da Silva 29/06/2015 at 13:06 #

    Estou fazendo alguns teste com MVC 6 ( “Microsoft.AspNet.Mvc”: “6.0.0-beta4″).
    Fiz um gerenciador de Roles (CRUD), no entanto, quando removo um roles relacionada com um usuario, ele ainda continua acessando a Controller, que nesse caso tem [Authorize(Roles =”Admin”)].

  15. Raniel Nogueira 29/10/2015 at 20:44 #

    Microsoft mais uma vez surpreendendo minhas expectativas, quando você pensa que uma coisa não pode ser melhorada eles de fazem babar.

  16. Jorge Tawnan 13/11/2015 at 15:59 #

    Muito bom.

  17. Rodrigo Milano 07/03/2016 at 14:53 #

    Esclarecedor! Obrigado por compartilhar.

  18. Luiz de Queiroz 30/06/2016 at 10:22 #

    Gostei da nova abordagem das TagHelpers, apesar de eu ser principalmente backend. Mas meus frontends com certeza se amarraram na abordagem.

    Todas as mudanças realmente são apenas essas, há algo mais?! Já faz um tempo desde este post, mas como ainda não sai do Asp.Net MVC 4 de vez, gostaria de saber se há mais mudanças além das citadas no post.

    Vlw, flw.

  19. Wanderson 21/09/2016 at 15:17 #

    migrar vb.net para c# não é nenhum “bicho de 7 cabeças” e você ira gostar.

Deixe uma resposta