Skip to content

ASP.NET Core e por que tanta mudança? Isso é bom ou ruim?

Por que tanta mudança no novo ASP.NET Core? Agora chamado ASP.NET Core. O que mudou? O que a Microsoft deseja com essa versão? O que essa mudança facilita em nosso trabalho a partir de agora? São algumas das perguntas que respondo na minha opinião nesse artigo, além de explicar quais foram as mudanças internas dentro da nova plataforma de desenvolvimento da Microsoft. Este é um primeiro de vários artigo que irei abordar sobre o assunto. Então, vamos começar!

Nesses 10 anos que trabalho com ASP.NET muita coisa mudou. Quando eu comecei a desenvolver na plataforma Microsoft, em meados de 2006 para 2007, eu pouco sabia sobre ela. Era um fã de Oracle e C++ e de começo fui trabalhar com WEB. Lembro que não gostava do Visual Studio 2005. Tive um trabalho enorme para diferenciar coisas de programação web para programação desktop. Mas uma coisa que achava muito parecida entre os dois mundos eram os Web Form Control. Adorava aquilo e por muito tempo não precisava saber nada sobre JS, claro que nessa época eu era um simples júnior na empresa. Mas ficava pensando que lindo produto a Microsoft tinha criado e como outras plataformas de desenvolvimento não tinham feito nada igual voltado para web.

Depois de iniciar um mega projeto e este necessitar de muita performance para ser aceito, fui obrigado a aprender JS e jQuery. E juntando Client com Server (JS + Web Server), percebi que só trabalhar com Web Form Control não eram tão legal como eu imaginava. Nessa época tive que diminuir a utilização de ViewState para que as páginas fossem carregadas mais rápidas e comecei a amar JS.

O tempo foi passando e o framework e ASP.NET foi crescendo, nesse tempo vi muitas empresas passarem também a utilizar a plataforma de desenvolvimento da Microsoft. Depois conheci o MVC e achei um máximo, porém, eu sabia que ainda tinha muitas e muitas coisas que eram do núcleo do Web Form, obvio, a base ASP.NET inicial foi construído para Web Form.

Neste período outras plataformas foram aparecendo e ganhando muito espaço, o destaque vai para Ruby e Node. Essas plataformas vieram com uma filosofia diferente, coisa que a Microsoft até então não tinha pensando em fazer. A primeira delas em minha opinião é você poder trabalhar lado a lado com os engenheiros da plataforma, com uma comunidade apaixonada e que se doa para ver aquilo andando bem. A segunda é que elas criaram um formato de arquitetura de projeto que faz com que qualquer sistema operacional e ferramenta de código fonte possa ler e executar seu projeto.

O mercado Microsoft é grande, mundial e muita empresa privada investe nessa plataforma justamente pela segurança e experiência de produto. Por que então a Microsoft quer mudar seu core de desenvolvimento? Para que tanto trabalho? Simples, conquistar um território que ainda ela não tem, outros sistemas operacionais e fazer um produto melhor ainda, mais rápido e mais leve. Caso contrário a tendência seria perder mercado para Ruby e Node.

A plataforma ASP.NET é uma das mais usadas conhecidas, mas para o desenvolvedor apaixonado por Linux não pensa duas vezes em deixar de lado o ASP.NET e começar a estudar e investir em plataformas que rodem em seu ambiente. Pensando nisso a Microsoft criou uma nova plataforma de desenvolvimento que funciona nos principais sistemas operacionais: Windows, Linux e Mac. Criou também um novo editor de código fonte chamado Visual Studio Code, onde está sendo utilizado até pela equipe da Google, pois ele não roda apenas “coisas” da Microsoft como também outras plataformas de desenvolvimento e em Windows, Linux e Mac. Apenas com esses dois produtos criados a Microsoft agora entra na mira de novos desenvolvedores e novas empresas podem recebê-la por seus sistemas não serem Windows.

Só tem um problema! Para a Microsoft fazer essas duas coisas é necessário mudar muita coisa no núcleo do framework do ASP.NET, que atualmente só funciona para Windows. E aí vem as tantas mudanças que estão acontecendo nesses dois anos.

Então, quais foram as mudanças que ocorreram?

Antes de responder, abaixo cito o que é o novo ASP.NET na documentação feita pela Microsoft:

“ASP.NET 5 is a new open-source and cross-platform framework for building modern cloud-based Web applications using .NET. We built it from the ground up to provide an optimized development framework for apps that are either deployed to the cloud or run on-premises. It consists of modular components with minimal overhead, so you retain flexibility while constructing your solutions. You can develop and run your ASP.NET 5 applications cross-platform on Windows, Mac and Linux. ASP.NET 5 is fully open source on GitHub.”

Como disse acima e respondendo a pergunta, o novo ASP.NET tem como características: funciona em várias plataformas, é open source e praticamente desenvolvido do zero. Para fazer tudo isso, inicialmente foi necessário quebrar em várias partes o System.Web.dll, pois este tem forte acoplamento com o .Net Framework que funciona apenas no Windows. Para quem já conhece o Web Forms, sabe que lembra muito o Windows Form.

Isso fez com que a equipe Microsoft tivesse que desenvolver classes especificas no .Net Framework para que o Web Forms tivesse esse estilo de programação. Esse é um dos motivos pelo qual nos últimos anos as atualizações no ASP.NET fossem demoradas, o .Net Framework também necessita de atualização. Já em relação ao Web API, SignalR e Identity são produtos que não dependem do System.Web, logo, não dependem exclusivamente de funcionar apenas no IIS, e por esse motivo não compartilham do mesmo Core. Por exemplo, Web API e MVC são muito parecidos, mas nós sabemos que internamente existem diferenças, uma delas é o cache.

System.Web.dll é um vilão? Sim e não. Se pensar nas facilidades que este pacote trouxe no passado não podemos considerar como vilão. Mas pensando no cenário atual, onde Ruby e Node competem e estão ganhando novos desenvolvedores a cada momento podemos dizer que ele é um vilão por estar muito acoplado ao framework e pela sua performance, já que mesmo que você não utilize sessão, cookie, membership e outros, tudo é processado no IIS, trazendo um certo gargalo para os sistemas. Quem já programou em Node sabe o quanto ele é rápido e leve. Lembra no começo quando falei que adorava o estilo do Web Form por lembrar programação desktop? Esse sempre foi o problema, fazer coisas especificas que só funciona em Windows.

O novo ASP.NET está muito parecido com Node, o que precisamos (sessão, cookie, arquivos estáticos, EF) tem que ser configurado para ser colocado na bandeja da aplicação, se não for configurado seu sistema fica sem aquele recurso. Isso é bom, por que você tem a opção de consumir apenas o que seu sistema necessita e assim temos um PIPELINE mais leve e enxuto.

Para construir o novo ASP.NET foi necessário construir o .Net Core, segue abaixo um resumo do que ele é na documentação da Microsoft:

“.NET Core 5 is a modular runtime and library implementation that includes a subset of the .NET Framework. Currently it is feature complete on Windows, and exist for both Linux and OS X. .NET Core consists of a set of libraries, called “CoreFX”, and a small, optimized runtime, called “CoreCLR”. .NET Core is open-source, so you can follow progress on the project and contribute to it on GitHub”

Agora temos .Net Framework 4.6, caso você queira continuar com toda a experiência e maturidade que o mesmo já oferece. O único empecilho é que este não é cross-platform. E também temos um novo core chamado .Net Core 1.0. Abaixo uma imagem do .Net Framework 4.6 ao lado .Net Core 1.0.

aspnet 46 and aspnet 10

No passado para que uma versão da aplicação pudesse rodar, por exemplo, no .Net Framework 4.5 era necessário atualizar todo o servidor para a versão desejada, e por esse motivo, algumas aplicações rodando naquele servidor poderiam sofrer algum problema por não ser permitido esta atualização. Agora, toda aplicação pode ser empacotada juntamente com o CoreCLR e assim não necessitar de um instalador do .Net Framework no servidor. Cada aplicação poderá ter uma versão diferente do CoreCLR e atualizar elas individualmente, sem afetar outras aplicações. Outra grande mudança que temos nesse novo .Net Core é o fato da compilação ser dinâmica, o que significa que não precisamos parar a aplicação para alterar o código fonte. Com a aplicação iniciada podemos efetuar a alteração e apenas atualizar a página que o código se atualizará dinamicamente.

Quando o .Net foi construído em 2002 era apenas um framework. Depois foi construído um outro framework chamado .Net Compact Framework, fornecendo uma versão pequena do original, mas destinada ao mobile. A partir desse caso começou a ter N frameworks para cada plataforma de desenvolvimento. A motivação por traz da construção do .Net Core é que ele seja portátil, único, modular e cross-platform. ASP.NET, Mobile e tantos outros irão utilizar o mesmo core.

O novo .Net Core também roda por cima do .Net Framework 4.6. Então caso seu servidor já esteja atualizado para esta última versão você poderá já utilizar o novo ASP.NET. Mas lembrando, apesar do novo ASP.NET estar em RC1, não é aconselhável que um projeto de médio a grande porte seja desenvolvido para ele. Pois, mudanças podem acontecer e é bom esperar a versão final que está prevista para o mês de abril deste ano.

Desde o início do desenvolvimento do novo ASP.NET muita confusão foi gerada em relação ao seu nome. Inicialmente, como um codinome, a Microsoft deu a ele o nome de VNext. Após alguns meses a Microsoft renomeou para ASP.NET 5, como continuação para o ASP.NET 4.6. Recentemente foi alterado para ASP.NET Core 1.0, por que conceitualmente é uma nova plataforma de desenvolvimento e tanto MVC e Web API estão dentro desse novo ASP.NET.

Conclusão

A Microsoft está dando um importante passo para continuação da sua plataforma de desenvolvimento para continuar durante muitos e muitos anos. Mostrou que se atualizar e estudar outras plataformas é importante para ver o que de legal se tem lá fora. Agora temos um ASP.NET mais leve, único, modularizado e que roda em vários sistemas operacionais. Não podemos esquecer que pela primeira vez temos todo o código fonte disponível no GitHub e isso é ótimo para que a comunidade possa trabalhar e melhorar cada vez mais o produto. Se você ainda programa em Web Forms é bom se atualizar, pois a tendência é que novos projetos sejam voltados apenas para a nova versão. Mas se você ainda programa em ASP Classic e gosta disso… Bom, você deveria pensar em fazer outra coisa :).

Se gostou ou não deixe um comentário.

Até a próxima e fique com Deus.

Fontes

https://github.com/dotnet/corefx
https://code.visualstudio.com/Docs/runtimes/ASPnet5
http://docs.asp.net/en/latest/conceptual-overview/aspnet.html
http://www.hanselman.com/blog/IntroducingASPNETVNext.aspx
http://www.adamtuliper.com/2015/12/understanding-aspnet-5-and-net-core.html

Published in.Net CoreC#

4 Comments

  1. Muito legal a explicação. Deu uma boa visão geral do que está acontecendo.

  2. Parabéns Batista, ótimo artigo, boa explicação. Estava montando um artigo falando sobre o core…mas o seu explicitou bem o conceito e todo o roadmap. Abd

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *