No início do .NET Framework considero que a Microsoft teve um grande mérito com o ASP.NET WebForms de conseguir trazer os desenvolvedores Desktop para Web sem um grande impacto, bom ou ruim, conseguiu trazer muitos sistemas Desktop para Web com a mesma equipe que as empresas possuíam.

Hoje em dia é uma discussão grande se esta forma estava certa ou errada, mas é algo que passou e agora já temos muitos desenvolvedores com consciência do que é o desenvolvimento web e o funcionamento das tecnologias e paradigmas envolvidos.

Entretanto, atualmente acredito que para projetos novos e que não tenha dependência direta de web forms como legado ou componentes de terceiros, não faz mais sentido utilizá-lo.

Prefiro fazer todo o desenvolvimento web com o ASP.NET MVC ou ainda dependendo do projeto usar Single Page Applications (SPA).

Mas claro o Web Forms não morreu, inclusive continua recebendo melhorias e dependendo do cenário pode ser que seja a melhor opção.

 

Resolvi documentar alguns dos motivos que cito quando perguntam “Web Forms ou MVC”?.

 

1) Ciclo de página

No MVC o ciclo de processamento das requisições é simples e direto. Basicamente rota, controller e action.

No WebForms temos um ciclo de página “delicado” (Page_Load, Page_Init, Render, etc) e precisamos ter cuidado no que fazemos em cada evento.

Por exemplo, a chamada do método EnsureChildControls em um momento errado pode pôr tudo a perder.

 

2) Controle sobre o HTML 

No MVC temos grande controle sobre o HTML gerado, além de gerar um HTML mais enxuto.

No WebForms o controle é mais limitado, e não são raros os momentos onde o HTML gerado fica pesado, trafegando muitos KBytes de forma desnecessária. Principalmente ao utilizar componentes de terceiros.

Até é possível ter algum controle com o método Render mas dá bastante trabalho, o que já está bem resolvido no MVC.

 

3) View State

No MVC não há View State. Ele é stateless por natureza, assim como a web (http).

No WebForms é muito comum que haja um excesso de tráfego de rede ou lentidão na carga de uma página devido o ViewState.

No desenvolvimento Desktop havia a manutenção de estado e o WebForms tentou manter isto, porém gerou uma ineficiência do aplicativo web que é um ambiente sem estado.

Há soluções paliativas, mantendo no servidor o estado da página (PageStateAdapter), mas ainda assim não dá a melhor performance.

 

4) Testes automatizado

No MVC a questão de automação de testes está bem resolvida. E não vou discutir aqui a importância de testes em um aplicativo.

No WebForms dá bem mais trabalho para testar e quando dá muito trabalho para criar testes nem sempre temos a melhor cobertura de código e qualidade nos testes.

 

5) Code-behind

No MVC a View e o Controller realmente separam as responsabilidades de lógica e de interface.

No Web Forms o code-behind ainda mistura código de interface com lógica pois é comum manipularmos e montarmos UI no code-behind.

 

6) Maturidade

O MVC já está um bom tempo no mercado e teve grandes evoluções desde a primeira versão. Hoje já está bem dominado as formas de desenvolver, não sendo mais uma “aposta” para qualquer que seja o tamanho do projeto.

O Web Forms também é bem maduro mas devido aos motivos acima e ter uma alternativa também bem madura, opto pelo MVC.

Sobre Single Page Application, acredito que é o futuro mas vejo que ainda estamos aprendendo as melhores práticas, escolhendo os melhores frameworks e componentes, o que dependendo do projeto pode ser um pouco arriscado devido a quantidade de escolhas a serem feitas.

 

Se você tiver mais algum argumento ou mesmo concordar ou discordar fique a vontade de comentar.

Até mais.

Rafael Leonhardt