.NET

19 mar, 2015

ASP .NET 5 – Nada será como antes

Publicidade

Neste artigo eu compilei informações de várias fontes para apresentar as novidades sobre a nova versão da ASP .NET: ASP .NET 5 (isso mesmo: ASP .NET 5!). Ele é um redesenho significativo da tecnologia ASP.NET. Muita, mas muita, coisa mudou. Felizmente para melhor.

Este artigo apresenta os novos conceitos do ASP.NET 5 e dá um resumo de como eles vão ajudá-lo a desenvolver aplicações web modernas.

Nota: Os recursos apresentados foram analisados com base na versão do Visual Studio CTP 6 e podem sofrer alterações até o lançamento da versão final.

Introdução ao ASP.NET 5

O ASP.NET 5 é a nova versão da plataforma .NET da tecnologia ASP .NET para a construção de aplicações web modernas. Ele foi feito a partir do zero para proporcionar uma estrutura de desenvolvimento otimizado para aplicativos que são implantados quer para a nuvem, quer para servidor.

Ele é constituído por componentes modulares com sobrecarga mínima, para manter a flexibilidade durante a construção de suas soluções.

O ASP.NET 5 inclui os seguintes recursos:

  • Novo runtime multiplataforma flexível;
  • Novo pedido de pipeline HTTP modular;
  • Configuração do ambiente pronto para nuvem (cloud-ready);
  • Modelo de programação unificado que combina MVC, Web API e páginas da web;
  • Capacidade de ver mudanças sem reconstrução do projeto;
  • Versionamento side-by-side do .NET Framework;
  • Capacidade de auto-host ou host no IIS;
  • Novas ferramentas do Visual Studio 2015;
  • Open source no GitHub.

As mudanças feitas no ASP.NET 5 visam atender as solicitações dos clientes e o feedback da comunidade de desenvolvedores. Estas mudanças simplificam o desenvolvimento, hospedagem e manutenção e são direcionadas para aplicações web modernas.

Seus aplicativos legados serão executados na nova versão do ASP.NET sem qualquer modificação. No entanto, para tirar proveito dos novos recursos no ASP.NET 5, você vai precisar portar seu código existente para o novo framework.

Você vai encontrar muitas semelhanças entre ASP.NET 5 e as versões anteriores do ASP.NET, então, portar o código envolve a correção de problemas específicos, em vez de reescrever a aplicação.

Este tópico fornece uma orientação resumida dos conceitos do ASP.NET 5 e as explicações sobre as mudanças feitas.

Por que redesenhar o ASP.NET?

No passado, as versões do .NET Framework eram entregues como uma única instalação abrangente.

A cada release da plataforma .NET, novas características eram adicionadas, de modo que o tamanho do framework cresceu continuamente. Esta abordagem assegurava que uma máquina Windows com a plataforma .NET instalada poderia suportar todo tipo de aplicação .NET, mas também significava que existiam aplicações que eram afetadas por recursos os quais na verdade elas não usavam.

Se uma atualização crítica era necessária para uma tecnologia na plataforma .NET, você recebia uma notificação de que uma atualização importante estava disponível, mesmo que não utilizasse diretamente esse recurso na plataforma.

Então, você tinha que decidir se desejava instalar esta atualização e suportar a interrupção de seu servidor ou ignorar a atualização e torcer para que você não precisasse realmente dela.

O ASP.NET 5 lhe dá uma maior flexibilidade por ser capaz de rodar em três runtimes:

1. Full .NET CLR

Este modo é o runtime padrão para projetos no Visual Studio. Ele fornece todo o conjunto de APIs e é a sua melhor opção para compatibilidade com versões anteriores.

2. Core CLR(runtime otimizado para nuvem)

O Core CLR é um runtime leve e totalmente modular para projetos ASP.NET 5. Ele foi reprojetado em componentes para que você tenha a flexibilidade para incluir apenas os recursos que você precisa no seu aplicativo. Você adiciona os componentes como pacotes NuGet. Quando terminar, o seu aplicativo depende apenas dos recursos necessários.

Pela refatoração do runtime em componentes separados, podemos entregar melhorias aos componentes mais rapidamente, pois cada componente tem a sua própria agenda de atualização.

O Core CLR tem cerca de 11 megabytes em vez dos 200 megabytes do runtime Full .Net CLR, e, pode ser distribuído com a sua aplicação, sendo que diferentes versões do Core CLR podem ser executadas lado-a-lado.

3. Cross-Platform CLR

É um runtime multiplataforma para Linux e Mac OS X. Este runtime permite desenvolver e executar aplicativos .NET em dispositivos Mac e Linux. Até o seu lançamento, você pode usar o Mono CLR para o desenvolvimento multiplataforma.

Por padrão, os novos projetos do Visual Studio usam o Full .NET CLR. Você pode especificar o Core CLR nas propriedades de configuração para o seu projeto.

Hospedar em qualquer lugar

O ASP.NET 5 permite que você hospede seu aplicativo no IIS ou que hospede sua aplicação no seu próprio processo. Quando você usar o Core CLR, você pode distribuir seu aplicativo com cada dependência empacotada dentro do pacote de implantação.

Portanto, o seu aplicativo e suas dependências são completamente auto suficientes e não mais dependentes de uma instalação da plataforma .NET no sistema. Qualquer tipo de dispositivo ou plataforma de hospedagem é capaz de executar o aplicativo.

Esse novo recurso lhe dá muita liberdade.

Ainda é recomendado usar o IIS como a melhor opção para hospedagem, mas em alguns casos, pode ser necessário usar uma plataforma de hospedagem diferente. Agora, basta distribuir o seu projeto para o host de destino.

Sua preferência de hospedagem não vai mais ditar qual framework de desenvolvimento você vai usar e vice-versa.

Use versões diferentes da plataforma .NET lado a lado

Quando os aplicativos em um servidor dependem de uma única instalação abrangente do .NET framework, todos os aplicativos têm que executar a mesma versão do .NET. Esta situação pode ter criado alguma ansiedade para você quando se considerava a atualização para uma nova versão do .NET Framework.

Talvez você quisesse que alguns dos seus aplicativos usassem a versão mais recente do .NET, mas você não tinham certeza se todos os seus aplicativos legados iria trabalhar adequadamente com a nova versão. Felizmente, o ASP.NET 5 resolve este problema. Você pode definir as dependências dentro de seu pacote de distribuição de forma que você pode especificar para cada aplicação qual versão do .NET vai usar.

Você obtém os benefícios da mais recente versão para algumas aplicações e da facilidade de ficar com uma versão antiga para outros aplicativos.

Todos essas diferentes versões executam lado-a-lado, sem quaisquer problemas. Para executar versões diferentes lado-a-lado, você deve direcionar para usar o Core CLR.

Simplificar o gerenciamento de dependência

O ASP.NET 5 apresenta uma nova maneira mais leve de gerenciar dependências em seus projetos. Você não vai mais adicionar referências a assemblies em seu projeto. Em vez disso, você vai gerenciar dependências referenciando pacotes NuGet – a referência é feita através do Gerenciador de pacotes NuGet, ou você pode editar o arquivo JSON (project.json), que lista os pacotes NuGet e versões utilizadas em seu projeto. Para adicionar outras dependências, basta digitar o nome e número de versão do pacote NuGet em seu arquivo project.json.

Eliminar a duplicação em MVC, Web API e páginas da Web

No passado, MVC, Web API e Web Pages continham características que se sobrepunham, mas a implementação destas características eram separadas.

Por exemplo, MVC e API Web forneciam o roteamento, mas as classes de roteamento MVC residiam no namespace System.Web.Mvc.Routing, enquanto as classes semelhantes para API Web residiam no namespace System.Web.Http.Routing.

As Web Pages e o MVC usavam ambas a sintaxe Razor, mas alguns pacotes NuGet eram compatíveis com apenas um ou com o outro.

No ASP.NET 5, o MVC, a Web API e as Web Pages foram fundidos em um framework único, chamado MVC 6. Esta fusão remove a duplicação do framework e torna mais fácil para você desenvolver aplicativos que usam esses frameworks.

Você não precisa mais escrever código ligeiramente diferente, dependendo se você está dentro de um contexto MVC, Web API, ou Web Pages.

Desempenho do HTTP melhorado

O ASP.NET 5 introduz um novo pedido HTTP pipeline que é leve e rápido. Este pipeline é modular, de forma que você pode adicionar apenas os componentes que você precisa. Ao reduzir a sobrecarga no pipeline, a sua aplicação vai experimentar um melhor rendimento.

O novo pipeline também suporta Owin, que define uma interface padrão entre servidores web .NET e aplicações web. O objetivo da interface Owin é dissociar servidor e aplicação, incentivar o desenvolvimento de módulos simples para o desenvolvimento web na plataforma .NET, e, por ser um padrão aberto, estimular o ecossistema open source de ferramentas de desenvolvimento web para .NET.

Pronto para a nuvem

Quando você cria um novo projeto ASP.NET 5, o projeto está estruturado para facilitar a implantação para a nuvem. O Visual Studio 2015 oferece um novo sistema de configuração do ambiente que substitui o arquivo Web.config e que permite solicitar valores nomeados a partir de uma variedade de fontes (como variáveis JSON, XML, ou variáveis de ambiente).

Você especifica os valores para cada ambiente e, após a implantação, o seu aplicativo simplesmente lê os valores corretos.

Existem também ferramentas de diagnóstico e rastreamento que tornam mais fácil para você descobrir problemas com seu aplicativo na nuvem.

Injeção de dependência integrada

A injeção de dependência está embutida no ASP.NET 5. Você pode usar o seu container de inversão de controle(IoC) para registrar dependências.

A injeção de dependência facilita a prestação dos serviços certos para o ambiente. Para obter mais informações, consulte Dependency Injection em ASP.NET vNext.

Código fonte aberto e transparente

Todo o código para o ASP.NET 5 está disponível através do GitHub. Não é apenas o código que está disponível; foram usados repositórios GitHub para todo o desenvolvimento. Assim, você pode ver exatamente quais mudanças foram feitas e quando elas foram feitas, além de te permitir baixar o código e apresentar alterações.

Através do desenvolvimento do ASP.NET 5 no GitHub, fica mais fácil para você entender o código, compreender para onde está indo a tecnologia, contribuir com melhorias e construir suas próprias implementações personalizadas dos recursos ASP.NET.

Proporcionar ambiente de desenvolvimento ágil

O Visual Studio 2015 oferece uma experiência de desenvolvedor leve para aplicações ASP.NET. Você simplesmente faz as mudanças em seu código, salva as alterações e atualiza o navegador. Você pode ver as mudanças de código no navegador web sem ter que reconstruir o projeto.

O código que você muda pode ser no projeto web ou em uma biblioteca de classe referenciada por seu projeto. Você deve executar (CTRL + F5) o projeto, ao invés de estar no modo debug para ver as mudanças dinamicamente.

O Visual Studio usa o compilador Roslyn para habilitar essa comparação dinâmica. Você ainda tem toda a estrutura e o poder de um framework compilado, mas a experiência de desenvolvimento se parece mais com uma linguagem interpretada.

Para saber mais sobre o Roslyn Compiler, visite o link.

E o que aconteceu com os Web Forms?

Desenvolve usando Web Forms? Não se preocupe…

Você pode continuar a desenvolver aplicativos Web Forms e ter a confiança de que os Web Forms é uma parte essencial da plataforma de desenvolvimento .NET para web.

A tecnologia não foi abandonada e ainda terá a adição de novos recursos para Web Forms para melhorar a experiência de desenvolvimento e manter a tecnologia atualizada com as práticas da web.

O novo Web Forms 4.6 inclui os seguintes recursos:

  • HTTP 2
  • Modelo Async obrigatório
  • Compiladores Roslyn CodeDOM

Os seus aplicativos Web Forms existentes continuarão a ser executados sem modificações no IIS com .NET 4.6. (você não pode usar aplicativos de Web Forms com o runtime otimizada para nuvem).

E como fica a minha aplicação legada?

Você pode estar preocupado que com o número de alterações feitas no ASP.NET 5, agora você vai ter que reescrever todas as suas aplicações. Mas não se preocupe, pois os aplicativos que você construiu em versões anteriores do ASP.NET continuarão a funcionar com o novo .NET Framework.

Você não precisa atualizar ou portar estas aplicações se você não precisar dos novos recursos no ASP.NET 5. Assim, você pode continuar a construir aplicativos Web Forms no Visual Studio 2015, usando o framework .NET 4.6.

No entanto, os aplicativos Web Forms não poderão tirar partido de qualquer um dos novos recursos interessantes do ASP.NET 5 descritos neste artigo.

Então, pare, pense e pondere se não chegou a hora de reescrever seu velho aplicativo Web Forms.

Suporte a GruntJS, NPM e Bower

O desenvolvimento front-end recebeu um grande avanço no ASP.NET 5 através do seu suporte ao GruntJS (e eventualmente ao Gulp).

O GruntJS permite que você construa recursos front-end, como arquivos JavaScript e CSS. Por exemplo, você pode usar GruntJS para concatenar e minificar os arquivos JavaScript sempre que você executar uma compilação no Visual Studio.

Nota: minificar é tornar um arquivo menos pesado removendo seus trechos desnecessários para que o código rode mais rápido.

Existem milhares de plugins GruntJS que permitem que você faça uma incrível variedade de tarefas diferentes (atualmente há 4.334 plugins listados nos repositório de plugins GruntJS ). Por exemplo, existem plugins para a execução de testes de unidade de JavaScript, para validar a qualidade do código do seu JavaScript (jshint), a compilação LESS e arquivos Sass em CSS, a compilação do texto TypeScript em JavaScript, e a minificação de imagens.

A fim de suportar o GruntJS, a Microsoft precisou suportar dois novos gestores de pacotes (além NuGet): o NPM e o Bower.

Primeiro, porque os plugins GruntJS são distribuídos como pacotes NPM e a Microsoft adicionou suporte para pacotes de NPM. Segundo, como muitos recursos do lado do cliente – como Twitter Bootstrap, jQuery, Polymer, e AngularJS – são distribuídos através do Bower, a Microsoft adicionou também o suporte para o Bower. Isso significa que você pode executar o GruntJS utilizando plugins do NPM e recursos clientes do Bower.

O novo xUnit.net

Nas versões anteriores do ASP.NET MVC, o framework de testes padrão era o Visual Studio Unit Testing Framework (às vezes chamado mstest). Este framework usa os atributos [TestClass] e [TestMethod] para descrever um teste de unidade.

O ASP.NET 5 agora usa o xUnit.net como seu framework de testes de unidade. Este framework usa os atributos [Fact] ao invés de [TestMethod] e não possui o atributo [TestMethod].

Você pode dar uma olhada no repositório MVC (e seus testes de unidade) aqui. O ASP.NET usa um fork de xUnit.net que está localizado aqui.

ASP .NET para Linux e OSX

Pela primeira vez na história do ASP.NET, você vai poder executar aplicações ASP.NET 5 no OSX e no Linux. Veja mais detalhes aqui.

Ufa! São tantas novidades que só o resumo delas já cansa. Imagina o que vem por aí…

Aguarde muitos artigos sobre o ASP NET 5 em 2015!