Com o ASP.NET MVC 2 e o Visual Studio 2010 temos uma grande sacudida no desenvolvimento para a web. Agora nós temos duas formas bem distintas de resolver o mesmo problema:

  • Podemos criar nossas aplicações da forma tradicional usando WebForms
  • Ou criar aplicações usando o design pattern MVC

Há grandes diferenças nas duas tecnologias. Vamos analisar uma a uma.

ASP.NET WebForms

  • Modelo de programação baseado em controles e eventos: a principal característica é a semelhança com aplicações desenvolvidas para Windows. Basicamente se você tem já desenvolveu em Delphi, VB6 ou .NET para Windows você tem grandes chances de se sentir familiar com a forma como tudo se relaciona no ASP.NET. Uma outra caracterísitca é se você não está disposto a aprender algo novo, WebForms te cairá bem.
  • Controles encapsulam HTML, JS e CSS: as dezenas de controles encapsulam o Html, Javascript e CSS. Você simplesmente adiciona o controle no formulário e ao executar tudo será gerado pra você.
  • Ricos controles de interface de usuário: ASP.NET separou o código de apresentação do código de comportamento da página, foi uma grande mudança em relação ao ASP clássico. E com isso trouxe uma dependência: se existe um controle na tela com um comportamento mais rico geralmente teremos métodos no servidor para dar suporte a esse comportamento.
  • Diferenças do navegador capturadas pra você: Alguns controles mais complexos do ASP.NET escrevem HTML+CSS+JS de acordo com o tipo de navegador que fez a requisição.
  • Desenvolver para SharePoint só em WebForms: Se você usa SharePoint você terá que usar WebForms.

ASP.NET MVC

  • É mais confortável para os desenvolvedores web: enquanto WebForms veio para ajudar a migrar os desenvolvedores Windows para a Web, ASP.NET MVC veio para ajudar os desenvolvedores web a desenvolverem aplicativos de forma mais natural.
  • Controle total do HTML: com MVC você passa a ter total controle sobre o que é gerado (HTML, CSS, JS). Em contrapartida você tem a sensação de trabalhar mais para fazer o mesmo.
  • Permite teste unitário: ASP.NET MVC te permite facilmente implementar teste unitário, e claro se você tem boas ferramentas para testar o seu código você terá um código melhor. Já em WebForms não há nada que se compare com os teste que MVC permite.
  • Força o desenvolvimento padronizado: com MVC você desenvolve de uma única maneira, e todo seu aplicativo é assim. Enquanto que em ASP.NET você desenvolve tentando manter tudo funcionando a medida que novos recursos são adicionados.
  • Extremamente flexível e extensível: Você acrescenta recursos na sua aplicação de forma desacoplada e pensa no workflow enquanto que em WebForms você desenvolve tentando juntar as peças.

Se você achou interessante, veja o video que o Scott Hanselman colocou no ASP.NET MVC com esse tema, vale a pena. Ou então dê uma passada no blog Code Better.