Hoje trago até vocês, traduzido e com algumas melhorias, um artigo muito bom que
encontrei a alguns dias no Nettuts+.
O artigo explica o que é e como funciona o modelo MVC (Model-View-Controller).
A História do MVC
MVC não é um padrão de design de aplicações, é um padrão de arquitetura que
descreve uma forma coerente de estruturar a sua aplicação. Ele também determina as
responsabilidades de cada parte dessa estrutura e como essas partes se relacionam.
O modelo MVC foi descrito pela primeira vez em 1979 e, óbviamente, o contexto
mudou um pouco desde então. O conceito de aplicações web ainda não existia. Foi
quando Tim Berners Lee plantou as sementes da World Wide Web (o que vocês devem
conhecer por www) que o mundo mudou para sempre e, por causa dessa enorme
diferença de visões, o padrão de desenvolvimento que usamos hoje em dia, por mais
diferente que seja, é baseado no modelo antigo de desenvolvimento de software.
A popularização do uso dessas estruturas em aplicações web se deve a dois frameworks
que, há um tempo, ficaram extemamente populares: o Struts (Java) e o Ruby on Rails
(Ruby). Essas duas ferramentas de desenvolvimento delinearam e mudaram a
forma/estrutura de centenas de outros frameworks que estavam por vir.
Symfony, Ruby on Rails, CodeIgniter, CakePHP e Zend Framework são exemplos de
frameworks atuais voltados para o desenvolvimento web
MVC para Aplicações WEB
A idéia por traz do padrão de arquitetura Model-View-Controller é simples: nós
devemos separar claramente a responsabilidade de cada parte do nosso sistema:
Responsabilidades de cada parte do MVC
Toda a aplicação é divida nessas três partes principais, cada uma encarregada de uma
tarefa diferente… Vamos ver agora algumas explicações e exemplos.
Controller
O Controller é responsável por organizar as requisições feitas pelo usuário (recebidas
como requisições GET ou POST a medida que o usuário utiliza os elementos do
sistema). A sua função principal é chamar e coordenar os recursos e objetos necessários
para executar a ação requisitada pelo usuário. Normalmente o Controller irá chamar o
Model apropriado, receber os dados dele e enviar para a View apropriada.
Model
O Model representa os dados e as regras que se aplicam a esses dados… É a
representação do conceito que a aplicação gerencia. Em qualquer software, tudo é
modelado como dados que manipulamos de uma certa forma. O que seria um usuário,
uma mensagem ou um livro para uma aplicação? São apenas dados que precisam ser
manipulados de acordo com regras específicas (data não pode ser no futuro, e-mail deve
seguir um formato, nome não pode ter mais de X de caracteres).
O model dá ao controller uma representação dos dados que o usuário requisitou (uma
mensagem, uma lista de livros, uma foto e etc.). Este modelo de dados será sempre o
mesmo, não importa como ele será apresentado para o usuário… É por isso que
podemos escolher qualquer view disponível para apresentar os dados.
O model contém a parte mais importante da lógica da nossa aplicação, a lógica que se
aplica ao problema que estamos lidando (um fórum, uma loja, um banco e etc.). O
controller contém uma lógica de organização mais interna da aplicação em si.
View
O View permite diferentes formas de apresentação para os dados recebidos do model.
Eles são como templates onde os dados preenchem as lacunas. Podem existir várias
views diferentes e é o controller que decide qual será usada.
Uma aplicação web é normalmente composta por um grupo de controllers, models e
views. O controller deve ser estruturado como grandes organizadores, que recebem as
requisições, decidem quais ações serão tomadas, quais models serão usados e quais
views serão apresentadas.
Por hoje é só pessoal!
Na próxima parte começaremos a ver alguns exemplos e códigos sobre o MVC… Até
lá!