ASP.NET MVC é uma tecnologia (framework) que foi concebida para respeitar
tais premissas e mais, para facilitar (sim, facilitar) a vida dos desenvolvedores que a utilizam, uma vez que se pode escrever
códigos mais limpos, livres de dependências e segmentados (separação de responsabilidades). Isso, por inércia, nos leva a uma estrutura de aplicação mais saudável, fácil de manter e otimizar.
2.1. ASP.NET MVC? Por quê?
Casa do Código
2.1
ASP.NET MVC? Por quê?
Conforme mencionamos no capítulo 1, por muitos anos, a Microsoft apostou em
um modelo diferente daquele tradicionalmente conhecido por desenvolvedores web (a saber, ASP.NET Webforms). Muito embora esta postura tenha colaborado em
grande escala para arrebanhar desenvolvedores de outros universos para o da internet, isso acabou por gerar alguns problemas nas aplicações, dentre os quais citamos:
Dificuldade de manutenção: como o nível de abstração (automatização de tarefas e encapsulamento de conceitos) no ASP.NET WebForms é elevado, as
aplicações tendem a não utilizar boas práticas de desenvolvimento. Este fato,
na grande maioria das vezes, implica em uma aplicação muito complexa de
ser mantida;
Pouco controle na geração do HTML: este é outro dos problemas gerados pela automatização dos processos. Quando se utiliza Visual Studio para criar
aplicações ASP.NET clássicas, muito do HTML é gerado pela própria IDE (In-
tegrated Development Environment) e pelos controles de servidor (GridView,
ComboBox etc.). Isto prejudica o trabalho entre designers e desenvolvedores;
Difícil de testar: eis aqui um grande problema encontrado nas aplicações ASP.NET tradicionais: são difíceis de testar. Note, com ASP.NET WebForms,
basicamente o que fazemos em termos operacionais é arrastar um compo-
nente para a área de trabalho e adicionar um comportamento programático
ao mesmo (via code-behind). Por que estamos mencionando isso? Para dizer
que esta prática gera alto acoplamento, e isso inviabiliza, por exemplo, a realização de testes unitários. E aplicação sem teste nos dias atuais é inaceitável.
Preocupação com o ViewState: cada elemento disponibilizado em uma apli-cação ASP.NET trazia a possibilidade de se guardarem valores associados ao
mesmo para evitar gets/posts desnecessários no servidor. Esta capacidade é co-
nhecida no ASP.NET como ViewState. Uma das implicações da utilização não
criteriosa deste recurso era o impacto negativo na performance das páginas;
Não separação de responsabilidades:
não era incomum em projetos
ASP.NET WebForms encontrar páginas que acessavam bancos de dados, com-
posição de elementos HTML através de strings em um método de exibição,
10
Casa do Código
Capítulo 2. Entendendo a estrutura de uma aplicação ASP.NET MVC
validações de CPFs no servidor etc. Separar responsabilidades era mais difícil e também gerava alto acoplamento.
Você sabe o que é Alto acoplamento"?
Alto acoplamento é nome dado à ocorrência de alto grau de depen-
dência entre partes de um software, sendo que estas partes deveriam fun-
cionar de forma independente. Complicou?!
Pense na seguinte situação real, do dia a dia: Você precisa se conectar
a um banco de dados para realizar uma atividade qualquer, certo? Para
isso, provavelmente você possui um método que realiza a conexão com
o banco. Acontece que, no interior de seu método de conexão, existe a
chamada para outro método, sendo que este último apenas identifica se
ocorreu algum erro e registra em um arquivo ou tabela de logs do sis-
tema. Assim, sabemos que existe uma dependência explícita do método
de conexão para com o método de registro de log. Um só pode funcionar
se o outro funcionar.
Tal dependência chamamos de acoplamento. Se este fato ocorre de
forma sistemática no projeto de software, dizemos que a aplicação é for-
temente/altamente acoplada.
Vale ressaltar que apontar defeitos não é dizer que determinada tecnologia é
ruim. O ASP.NET WebForms ainda é muito utilizado, mas como tudo tem
prós e contras e, em alguns cenários, os defeitos apresentados por ele são maiores que os benefícios. Mesmo utilizando ASP.NET WebForms é possível ter um desenvolvimento que permite testes ou baixo acoplamento, mas devido à forma de trabalho
com a tecnologia, o esforço para garantir esses ideais é alto utilizando ASP.NET
WebForms.
Como o cenário web transformou-se rápida e amplamente nos anos posteriores
(mudança alavancada principalmente pelos negócios, que também passaram a ser
realizados neste ambiente), fez-se necessária a estruturação de uma nova tecnologia para desenvolvimento web dentro da plataforma .NET, que atendesse às novas demandas de mercado e que pudesse endereçar os problemas mencionados anteriormente. Surgiu então, o ASP.NET MVC.
11
2.2. Voltando à nossa primeira aplicação
Casa do Código
2.2
Voltando à nossa primeira aplicação
No primeiro capítulo, criamos uma aplicação de exemplo (é claro que você se lembra, certo?!). Evidentemente, a aplicação à qual nos referimos é simples, afinal de contas, apresenta apenas uma mensagem personalizada na tela, não é mesmo?