Olá Pessoal!
Vou abordar aqui um assunto que já deu muita repercussão, mas que ainda é relevante. No desenvolvimento com ASP.NET, devemos utilizar WebForms ou MVC?
Primeiramente vamos conhecer um pouco de cada para identificar melhor suas vantagens e desvantagens.
ASP.NET WebForms
Foi lançado em 2001 sendo o primeiro modelo adotado para desenvolvimento .NET para web e ganhou vários adeptos (inclusive programadores de outras linguagens) por ter uma curva de aprendizado consideravelmente menor. Algumas características como o modo design da página permitir arrastar e soltar componentes (botões, caixas de texto, etc) tornavam o desenvolvimento muito mais rápido, gerando código automático. O uso de Update Panels deixavam cada requisição ao servidor “imperceptível” aos olhos do usuário e o gerenciamento do estado era totalmente automático. Portanto, fazer um CRUD por exemplo, era questão de minutos até mesmo para iniciantes.
Por outro lado há inúmeros problemas atrelados ao utilizar WebForms que são sentidos por profissionais um pouco mais experientes ou em aplicações maiores. São alguns deles:
- Código gerado automaticamente é muito “sujo” e não é possível ter controle sobre ele quando utiliza-se componentes prontos;
- Dificulta a modularização do seu sistema;
- O gerenciamento de estado da página é controlado pelo ViewState, que conforme as requisições vai crescendo de forma absurda, fazendo com que a página fique pesada;
- Difícil integração com frameworks javascript e troca de informações entre o lado cliente e servidor.
ASP.NET MVC
MVC significa Model-View-Controller. Observando a sigla, podemos perceber que há uma divisão de tarefas para cada letra. O padrão MVC não foi desenvolvido pela Microsoft, apenas adotado como novo modelo de desenvolvimento para o ASP.NET. Vamos entender um pouco a função de cada parte:
- Model: Responsável pela lógica de negócio e criação do modelo de dados propriamente dito, muitas vezes sendo a representação do modelo de um banco de dados;
- View: É a parte destinada ao controle e exibição dos dados para o usuário;
- Controller: Responsável pela lógica da aplicação, utilizando-se dos dados do Model e escolhendo a View a ser utilizada.
Como podemos perceber, esse modelo separa bem as camadas da aplicação e não possui recursos de arrastar e soltar componentes, exigindo que o programador escreva mais código, o que não é necessariamente um problema, uma vez que é possível ter total controle do código que está sendo escrito e sem geradores automáticos que produzem “lixos” no código. As vantagens são notadas quando há a necessidade de fazer um reuso de controles, realizar a integração com outros frameworks, testar os mesmos e até mesmo escalar sua aplicação dependendo do tamanho da mesma.
Perceberam que ao escrever sobre o WebForms eu utilizei os verbos no passado? Pois é, ele é passado, porém isso não quer dizer que não possa mais ser utilizado ou que não possui alguma utilidade, afinal os projetos que estão escritos e que ainda são mantidos necessitam de profissionais que o entendam. A dica é, se você é um desenvolvedor iniciante, aprenda e dedique-se ao MVC e se você vem do WebForms já está mais do que na hora de evoluir.
Por fim, deixo o vídeo de um hangout do canal ASPNETCAST, onde o pessoal debate um pouco sobre o assunto:
Qualquer sugestão, dúvida ou esclarecimento, utilize os comentários abaixo.