Introdução ao ASP.NET MVC – Parte 1

Olá pessoal, finalmente resolvi começar essa série de artigos falando deste framework que é um dos mais importantes no desenvolvimento Web para plataformas Microsoft já a alguns anos e continua fazendo muito sucesso e sendo muito requisitado por empresas de desenvolvimento no Brasil e no mundo.

Eu diria que é obrigatório saber ASP.NET MVC hoje em dia para trabalhar em grande parte das empresas de desenvolvimento do Brasil (me refiro as que obviamente trabalham com tecnologias Microsoft).

Esta série de artigos terá algumas partes, inicialmente conceituais e depois colocando os conceitos em prática, com projetos feitos no padrão MVC, e com todo o código fonte sendo postado em meu Github, para acesso completo, sem o problema de links quebrados que tive tanto no passado.

Então vamos começar, essa primeira parte está cheia de links, as referências obtidas para montar esse artigo e outros links muito úteis estarão ao final do mesmo.

Você sabia que antes de mais nada o MVC é um padrão arquitetural de software? 

E que ele foi originalmente criado por um cientista norueguês chamado Trygve Reenskaug, na divisão de pesquisa da Xerox, em 1978? E tem mais, ele inicialmente foi concebido como um padrão para desenvolver interfaces de usuários nos computadores desktop, e implementado na construção da linguagem Smalltalk, tendo seu primeiro uso no Smalltalk-80, mas a primeira referência pública a este padrão só foi aparecer em 1988, em um artigo chamado “A Cookbook for Using the Model-View-Controller User Interface Paradigm in Smalltalk -80”.

Interessante né? O padrão MVC foi criado, nas próprias palavras de Trygve “as the design solution to a particular problem”, ou como uma solução de design para (resolver) um problema particular.

E esta foi a primeira ilustração do padrão conhecida.

mvc-2006

Como a imagem acima ilustra, a proposta essencial do padrão MVC é preencher a lacuna existente entre o modelo mental do ser humano e o modelo digital que existe no computador. A solução ideal para o padrão MVC suporta a ilusão do usuário estar vendo e manipulando as informações de domínio diretamente. A estrutura é útil se o usuário precisa ver o mesmo elemento de modelo simultaneamente em diferentes contextos e/ou em diferentes pontos de vista. É o que ilustra a imagem acima, nas palavras de Trygve.

Mas afinal o que significa a sigla MVC?

M de Model, responsável por gerenciar os dados, lógica e regras de negócio da aplicação;

V de View, responsável por ser a representação visual da aplicação, a que o usuário interage;

C de Controller, responsável por gerenciar os detalhes envolvendo a comunicação entre a model e a view.

A ilustração abaixo ajuda a entender a interação entre cada componente.

200px-mvc-process-svg

Baseando na imagem acima um usuário acessa a View, enviando comandos por ela, internamente estes comandos são enviados por meio da Controller, que por sua vez manipula a informação na Model, que por sua vez atualiza novamente a View, devolvendo o resultado destes comandos ao usuário.

Um pouco da história do ASP.NET MVC ao longo dos anos

ASP.NET MVC é uma tecnologia desenvolvida pela Microsoft em cima do padrão supra-citado como uma solução open-source, em meados de 2007.

Segundo a Microsoft, “o ASP.NET MVC é um framework leve, altamente testável de apresentação que é integrado com as features existentes do ASP.NET. Algumas destas features integradas são master pages e autenticações baseadas em membership (criação e combinações de logins e senhas únicas). O framework MVC é definido no assembly System.Web.Mvc.”

O framework MVC acopla as models, views e controllers usando contratos baseados em interfaces, permitindo assim que cada componente seja testado independentemente.

Histórico de versões

  • Em Dezembro de 2007 saiu a primeira versão do MVC, como beta
  • Em Março de 2009 foi lançado a versão final do MVC 1.0
  • Em Março de 2010 foi lançado o MVC 2.0
  • Em Janeiro de 2011 foi lançado o MVC 3.0
  • Em Agosto de 2012 foi lançado o MVC 4.0
  • Em Outubro de 2013 foi lançado o MVC 5.0

Sempre programei em ASP.NET Web Forms, porque devo migrar para o ASP.NET MVC?

Eu também venho de Web Forms mas finalmente decidi me render ao MVC, tanto como opção de mercado quanto opção lógica a ser tomada com relação ao desenvolvimento com ASP.NET (estou conscientemente excluindo deste artigo o recente ASP.NET Core mas devemos saber da existência e importância dele, que foi reescrito do 0 e além de não utilizar o System.Web, em termos de performance se mostrou superior até que o Node.js (framework Javascript)), afinal raramente as empresas hoje em dia só usam Web Forms e as que usam estão deixando de usar e migrando para o MVC, abaixo cito alguns fatos em que o MVC se prova superior ao Web Forms, segundo desenvolvedores que usam a algum tempo, e segundo comparações que já passei usando Web Forms e posso atestar a veracidade dos problemas citados nos exemplos abaixo:

  • O ciclo de vida da página é mais simples e mais eficiente;
  • Não existe coisa diferente do que controles, além de controles html, você não precisa debugar o resultado para ver o que o ASP.NET está gerando;
  • ViewModels te dão imenso poder e previnem a necessidade de fazer o binding entre controles manualmente e elimina muitos erros relatados ao binding;
  • Você pode ter múltiplos forms em uma página, esta era uma séria limitação dos Web Forms;
  • A web (protocolo HTTP) é “sem estado”, ou seja, o HTTP não tem suporte built-in para estados, e o MVC combina de forma mais próxima com a arquitetura do protocolo HTTP. Web Forms introduz estado e os bugs que você tem de lidar usando ViewState. O ViewState é automático e funciona em segundo plano, então nem sempre se comporta da forma que você deseja;
  • Aplicações web precisam trabalhar com AJAX hoje em dia. Não é aceitável ter carregamentos completos de páginas Web mais. MVC faz o AJAX muito melhor, fácil e mais eficiente com jQuery;
  • Como você tem múltiplos forms em uma página e como a arquitetura é orientada a chamadas à urls, você pode fazer coisas engraçadas como carregar um form diferente por meio do AJAX, como por exemplo um formulário de edição em sua página atual usando jQuery. Uma vez que você perceba o que isso permite você fazer em suas páginas, você poderá fazer coisas incrivelmente fáceis;
  • ASP.NET Web Forms não é somente uma abstração sobre o html, é uma abstração extremamente complexa. As vezes você pega um bug estranho e fica “travado” muito mais tempo do que deveria. Em muitos casos você até poderia ver o que estava fazendo errado mas você fica impossibilitado de fazer qualquer coisa. Você acaba tendo que fazer estranhos workarounds, ou gambiarras (formalmente também chamado de soluções alternativas para problemas bizarros);
  • Web Forms não provém uma boa tecnologia para designers. Designers geralmente gostam de trabalhar diretamente com o HTML. Em MVC é uma view, em Web Forms é metade de um dia de trabalho;
  • Como a plataforma web está evoluindo rapidamente Web Forms não irá conseguir acompanhar. Não está a par de novas tags ou features do HTML5, ainda irá renderizar a mesma coisa a menos que você (que é o que geralmente acontece) gaste caro em controles de terceiros (DevExpress/Telerik por exemplo) ou espere um update da Microsoft (bem difícil acontecer);
  • Controles em Web Forms limitam você em muitas formas diferentes. Em MVC você pode apenas arrastar uma biblioteca do jQuery e integrar em seus templates.

Acho que estes pontos irão te ajudar a convencer de migrar do Web Forms para o MVC.

Por enquanto é isso, achou esse monte de assunto complicado? Fique tranquilo que na próxima parte vou facilitar colocando em prática os conceitos explicados aqui com um projeto feito em ASP.NET MVC, no Visual Studio 2015 Community com banco de dados Northwind. Não usa Visual Studio 2015? Não se preocupe, os conceitos abordados serão os mesmos em qualquer versão que suporte o .NET Framework 4.0 (a partir do Visual Studio 2012).

Gostou? Viu algo errado ou que faltou comentar? Não deixe de dar o seu feedback nos comentários para que eu possa melhorar a qualidade dos artigos e até o próximo.


Leituras interessantes para quem deseja migrar uma aplicação existente em Web Forms para MVC:

https://codingatilivedigitally.wordpress.com/2012/07/10/9-steps-to-switch-from-asp-net-web-forms-to-mvc/

http://stackoverflow.com/questions/532227/how-to-migrate-existing-asp-net-application-to-asp-net-mvc-pattern-format

Outras leituras úteis relacionadas

http://www.codeproject.com/Articles/668182/Difference-betweeen-ASP-NET-WebForms-and-ASP-NET-M

http://www.webdevelopmenthelp.net/2013/09/Top-ASP-NET-MVC-Interview-Questions.html

http://www.c-sharpcorner.com/UploadFile/97fc7a/similarities-and-dissimilarities-between-mvc-and-web-forms

Referências usadas na construção do artigo

https://en.wikipedia.org/wiki/Trygve_Reenskaug

http://heim.ifi.uio.no/~trygver/themes/mvc/mvc-index.html

http://c2.com/cgi/wiki?ModelViewControllerHistory

https://en.wikipedia.org/wiki/Smalltalk

https://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller

https://en.wikipedia.org/wiki/ASP.NET_MVC

Anúncios

6 comentários sobre “Introdução ao ASP.NET MVC – Parte 1

Expresse sua opinião!

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s