Design Patterns em .NET: o padrão MVC
O artigo trata do uso do padrão MVC, através do framework ASP.NET MVC que é uma implementação da Microsoft para aplicações WEB baseadas em ASP.NET. A ideia principal deste padrão é realizar uma separação de responsabilidades.
Artigos .NET Design Patterns em .NET: o padrão MVC
Design Patterns com .NET - Parte 1
Design Patterns com .NET - Parte 2
O tema é útil para quem deseja criar aplicações separando as responsabilidades do projeto – independente da plataforma – separando o acesso de dados e regras de negócio, apresentação e integração entre estas camadas. Com o framework .NET e o Visual Studio 2010, tornou-se muito fácil adotar o MVC para a criação de aplicações Web.
MVC - Model View Controller:
A conclusão da série de artigos sobre os design patterns mais comuns e mais usados para o framework .NET, é feita sobre o mais antigo padrão e que deu origem aos demais. Inicialmente criado para promover separação das responsabilidades, com as novas necessidades dentro do processo de desenvolvimento de software, o MVC se adaptou muito rapidamente com o cenário do desenvolvimento atual.
Atualmente o mais comum para aplicações Web dentro do framework .NET, não era originalmente uma exclusividade deste tipo de projetos, mas, graças as suas características se adequa perfeitamente neste tipo e oferece recursos muito interessantes.
O ASP.NET MVC pode ser considerado um avanço da plataforma .NET para o desenvolvimento Web. Com o surgimento dos Web Forms, alguns desenvolvedores mais focados em Web não se sentiram muito confortáveis. Este modelo de aplicação tirava as mãos do HTML e também o controle sobre o que ocorre com a página. Atenta à comunidade de desenvolvedores Web, a Microsoft conseguiu evoluir sua plataforma Web criando um template muito popular para aplicar este design pattern em seus projetos.
O que garante a qualidade de um produto de software e faz com que este seja bem sucedido durante o seu ciclo de vida? Esta é uma velha questão para os desenvolvedores de software e que já rendeu muitos livros e material. Mas, tanta conversa acaba recaindo sobre um ponto em comum que começa a ganhar importância e (mais) atenção dos programadores – o processo de desenvolvimento.
Dentro deste processo o que você vai fazer é importante, por exemplo, quais as partes de um software serão arquitetadas, quais etapas serão cumpridas e de que maneira as diversas partes serão interconectadas.
Os padrões MVC, MVP e MVVM podem ser usados diretamente na plataforma .NET e, quando se está trabalhando com o Visual Studio, alguns templates ficam disponíveis para estas arquiteturas. Os mesmos criam toda uma estrutura pré-formatada, cabendo ao desenvolvedor apenas sua adaptação de acordo com suas necessidades.
O ponto mais importante é determinar qual o design pattern mais adequado às suas necessidades e quais seus benefícios, seus problemas e o impacto que isto traz para o desenvolvimento do produto de software e o programador. Logo de início, ficou claro para os que acompanharam esta série de artigos, que estes adicionam trabalho extra durante o processo de desenvolvimento. Certamente é exigido que os conhecimentos dos fundamentos das linguagens e do framework .NET sejam bem consolidados.
Dos três patterns, dois usam intensivamente a herança e interfaces. São os patterns Model-View-Presenter (MVP) e Model View-View Model (MVVM).
Em comum todos possuem também, além da complexidade, o fato de procurar deixar as responsabilidades do software em camadas bem distintas. Assim, Model é sempre relacionado com a definição (modelagem) dos dados e do seu comportamento no tocante às regras de negócio. View, como o próprio nome indica, trata da apresentação destes ao usuário e por fim o que diferencia cada um deles Controller, Presenter e ViewModel.
MVC - o primeiro design pattern
Este é um padrão antigo realmente, com origens lá pela década de 1970. Mas, atualmente encontrou uma grande adoção por parte da comunidade dos desenvolvedores, talvez por causa da sua arquitetura que permite entre outras vantagens:
· Grande separação das responsabilidades tendo cada parte do software bem definida e com o mínimo de acoplamento possível;
· Ser um design pattern que facilita o desenvolvimento orientado a testes ou TDD. Atualmente, a possibilidade de escrever testes automatizados para garantir a qualidade e o funcionamento correto do software, está entre os principais requisitos para um bom processo de criação de software;
· Diferentemente dos projetos ASP.NET, não se usa view states ou conteúdo baseado em server controls. O programador tem toda a responsabilidade e controle sobre o funcionamento da sua aplicação. Para o bem e para o mal.
Como pode ser observado se você acompanhar o desenvolvimento do projeto proposto, o código fica mais claro e sem muita confusão de responsabilidades.
Uma página ASPX que é usada pela camada view para representar os dados, contêm marcação HTML. Embora alguns Server Controls sejam necessários – principalmente para controlar alguns aspectos como comportamento quando se usa master pages – a parte visual é HTML.
Já as camadas model e view são escritas com C# e cuidam do comportamento dos dados (model) e como estes são enviados para a apresentação (controller).
Então, o que fez um design pattern que já era conhecido dos desenvolvedores, voltar com toda força fazendo, à primeira vista, regredirmos para um ponto esquecido no passado onde, como disse certa vez Linus Torvalds (criador do sistema operacional Linux): "Os homens eram homens de verdade e os programadores escreviam seus próprios device drivers."? Qual a razão para abandonar ferramentas RAD e voltar a "escovar bits" e "meter a mão na massa"?
A história já é conhecida. No início havia o HTML e páginas estáticas e o conteúdo vagava por uma infinidade de marcações, java scripts e folhas de estilo CSS. Então surgiram as primeiras aplicações CGI que foram sucedidas por linguagens como PHP que incorporavam a parte da lógica ao código HTML.