Olá pessoal, o debate MVC x WebForms se tornou muito popular e pretendo abordar o tema aqui também.
Ambas tecnologias são para desenvolvimento Web.
ASP.Net WebForms:
- Existe desde 2001 (foi o primeiro modelo de desenvolvimento Web com .Net)
- Tomou o lugar do ASP3 (a maioria dos sites migraram de ASP para ASP.Net)
- É até hoje o modelo mais utilizado em desenvolvimento ASP.Net.
O WebForms facilitou muito a vida de quem trabalhava com WindowsForms ou VB6, segue o conceito de “drag and drop”, controles muito ricos como o GridView por exemplo com um simples arrastar e soltar.
O WebForms faz sozinho boa parte do trabalho de desenvolver para Web:
- Gera HTML e JavaScript sozinho.
- Controla o estado dos controles (postback / viewstate)
- Os controles fazem praticamente tudo que precisa sem programação extra.
Com tudo isso temos uma boa lista de prós para o WebForms:
- É RAD (Muito rápido de desenvolver).
- Controles ricos.
- HTML e JavaScript automático. “sem necessidade de programar”.
- Gerenciamento do estado abstraído.
- Designer Visual.
Mas também temos os contras:
- Não se tem muito controle do HTML e JavaScript gerado.
- Alguns controles não estão em conformidades com o W3C.
- Difícil integração com frameworks JavaScript.
- A UI (user interface) é quase impossível de se testar.
- Problemas para utilizar SEO
Para entendermos melhor as diferenças vamos fazer uma comparação.
ASP.Net MVC:
- Segue o padrão arquitetônico de Model View Controller.
- Faz separação de responsabilidades (cada letra de MVC com a sua).
Para esclarecer, o conceito do MVC não foi criado pela Microsoft (foi pela Xerox em meados de 70), porém foi muito bem adotado e revitalizado.
Quais os prós de se usar MVC:
- Separação de responsabilidades (cada camada com a sua).
- Testabilidade.
- Reusabilidade.
- Escalabilidade.
- Manutenção facilitada.
- Total controle do HTML e JavaScript gerado.
- Suporta TDD em todos os apectos.
Muito bom né? Agora vamos aos contras:
- Não é tão RAD quanto o WebForms.
- Não disponibiliza controle prontos “drag and drop” (mas existem muitos free).
- A curva de aprendizado é maior, há mais coisas para aprender.
- Mais coisas para controlar, por ex, sessão de usuário.
- É necessário desenvolver mais código.
Certo, já deu para balancear?
O que o MVC tem em comum com WebForms:
- Ambos são ASP.Net (rodam sob o mesmo runtime).
- Geram páginas ASPX.
- Rodam no IIS.
- Acessam dados livremente (ADO.Net, LINQ, Entity Framework).
- São desenvolvidos no Visual Studio (para MVC é necessário baixar um complemento dependendo da versão do Visual Studio).
Acredito que com base nesses conceitos e diferenças já dá para ter uma ideia de qual abordagem é mais indicada para determinados projetos.
Muitos estão afirmando que o WebForms virou o ASP3 (clássico) ou seja está caindo em desuso. “Quando muitos gurus da tecnologia começam a fazer esse tipo de afirmação a tendência é que se torne uma verdade.”
Afinal qual dos dois escolher para meu próximo sistema Web?
Desenvolver um sistema Web, ASP.Net, desenvolvido em WebForms, na maioria das vezes pode (e vai) atender meu cliente, o que me motiva escolher MVC já que o esforço de desenvolvimento é maior?
As maiores vantagens são:
- Controle total do HTML e JavaScript gerado.
Seu site não vai ter o CSS quebrado ou uma função JS desconhecida gerada pelo ASP.Net. Além de facilitar a compatibilidade com os browsers. - Possibilidade de testar a UI
No WebForms isso é quase impossível, uma vez que não conhecemos o código que ele irá gerar. Para quem usa TDD é essencial ter todas as camadas testadas. - Reaproveitamento de código
O código que é gerado com MVC é seu, você o conhece e o reaproveita onde quiser. - Aperfeiçoamento no conhecimento de CSS, HTML e JavaScript.
Essas tecnologias por mais que bem conhecidas estão em alta, novidades como Windows 8, HTML 5 e o conceito da “Nova Web” são baseadas no uso destes conhecimentos, não dá mais para deixar de lado.
Até então todos desenvolvedores ASP.Net eram adeptos ao WebForms, logo nem sempre encontramos profissionais experientes em MVC (que já está na versão 4).
Cenário:
Você tem um projeto de um sistema web para fazer, o prazo é curto, o sistema não exige uma interface rica e customizada (ainda mais se for uma intranet) e sua equipe não tem conhecimento de MVC, vá de WebForms, não é nesse momento que deverá colocar em prática o aprendizado do MVC.
Eu mesmo gosto do WebForms (assim como já gostei muito de ASP3), trabalhei anos com ele, migrei para o MVC e aos poucos estou convertendo projetos para essa tecnologia.
Minha dica é:
Aprenda! Não deixe de aprender, experimente fazer um projeto em MVC, com o tempo e conhecimento a produtividade volta ao normal, e mais, você se manterá atualizado (MVC já é um pré-requisito para muitas vagas de desenvolvimento).
Por hoje é isso…
Pretendo continuar esse assunto abordando um novo conceito, chamado até então de “Nova Web”. Aguardem.
Quer compartilhar sua experiência? Tirar dúvidas? Utilize os comentários 😉
Referências: