MVC - O padrão de arquitetura de software

Canal: Desenvolvimento  |  Autor: Jonathan Lamim Antunes  |  Publicado em: 29/05/2009  |  Views: 4.661

Model-view-controller (MVC) é um padrão de arquitetura de software. Com o aumento da complexidade das aplicações desenvolvidas torna-se fundamental a separação entre os dados (Model) e o layout (View). Desta forma, alterações feitas no layout não afectam a manipulação de dados, e estes poderão ser reorganizados sem alterar o layout.



Um diagrama simples exemplificando a relação entre Model, View e Controller. Obs.: as linhas sólidas indicam associação direta e as tracejadas indicam associação indireta.


 


O model-view-controller resolve este problema através da separação das tarefas de acesso aos dados e lógica de negócio, lógica de apresentação e de interacção com o utilizador, introduzindo um componente entre os dois: o Controller. MVC é usado em padrões de projeto de software, mas MVC abrange mais da arquitetura de uma aplicação do que é típico para um padrão de projeto.

Descrição do Padrão

MVC diz como os componentes da aplicação interagem.

Note: A partir do momento em que dividimos os nossos componentes em Camadas podemos aplicar o MVC nestas. Geralmente isto é feito definindo a Camada de Negócios como o Model, a Apresentação como a View. O componente Controller exige um pouco mais de controle. Logo, cuidado para não confundir MVC com separação de camadas. Camadas dizem como agrupar os componentes. O MVC diz como os componentes da aplicação interagem.

O MVC baseia-se em 2 princípios fortes. - O Controller Despacha as Solicitações ao Model; - A View observa o Model;

Model
A representação "domínio" específica da informação em que a aplicação opera. Por exemplo, aluno, professor e turma fazem parte do domínio de um sistema acadêmico. É comum haver confusão pensando que Model é um outro nome para a camada de domínio. Lógica de domínio adiciona sentido a dados crus (por exemplo, calcular se hoje é aniversário do usuário, ou calcular o total de impostos e fretes sobre um determinado carrinho de compras).


Muitas aplicações usam um mecanismo de armazenamento persistente (como banco de dados) para armazenar dados. MVC não cita especificamente a camada para acesso aos dados, porque subentende-se que estes métodos estariam encapsulados pelo Model.

View
"Renderiza" o model em uma forma específica para a interação, geralmente uma interface de usuário.

Controller
Processa e responde a eventos, geralmente ações do usuário, e pode invocar alterações no Model. É lá que é feita a validação dos dados e também é onde os valores postos pelos usuários são filtrados.

MVC é muito visto também em aplicações para Web, onde a View é geralmente a página HTML, e o código que gera os dados dinâmicos para dentro do HTML é o Controller. E, por fim, o Model é representado pelo conteúdo de fato, geralmente armazenado em bancos de dados ou arquivos XML.

Ainda que existam diferentes formas de MVC, o controle de fluxo geralmente funciona como segue:

1. O usuário interage com a interface de alguma forma (por exemplo, o usuário aperta um botão)
2. O Controller manipula o evento da interface do usuário através de uma rotina pré-escrita.
3. O Controller acessa o Model, possivelmente atualizando-o de uma maneira apropriada, baseado na interação do usuário (por exemplo, atualizando os dados de cadastro do usuário).
4. Algumas implementações de View utilizam o Model para gerar uma interface apropriada (por exemplo, mostrando na tela os dados que foram alterados juntamente com uma confirmação). O View obtém seus próprios dados do Model. O Model não toma conhecimento direto da View.
5. A interface do usuário espera por próximas interações, que iniciarão o ciclo novamente.

Existe também uma forma de interpretação do padrão MVC que é:

1. View - Páginas em formato com resposta HTML (JSP,ASP,PHP).
2. Controller - Controle da regra de negócio.
3. Model - representação dos elementos do seu domínio e interação com as ferramentas de persistência.

Essa interpretação é comum quando o sistema é muito pequeno (cadastro de livro para biblioteca) ou a linguagem de programação não oferece um framework amigável para o trabalho (Ruby, Coldfusion).

Histórico

Originalmente foi criado como padrão de projeto arquitetural desenvolvido para o ambiente Smalltalk, mas ele pode ser utilizado para qualquer aplicação interativa.

Frameworks MVC

ActionScript 3

* Cairngorm - Framework da Adobe para ActionScript 3 - http://opensource.adobe.com/wiki/display/cairngorm/
* PureMVC - Framework para ActionScript 3 - http://puremvc.org/

ASP

* ASP Xtreme Evolution - Framework MVC para Linguagem de programação ASP - http://zend.lojcomm.com.br/goodies/asp-xtreme-evolution/
* Toika - Framework MVC para Linguagem de programação ASP - http://www.troika-asp.com/
* AJAXED - Framework MVC para Linguagem de programação ASP - http://www.ajaxed.org/

Java

* Apache Struts - Framework MVC para Java - http://struts.apache.org/
* Mentawai - Framework MVC para Java - http://www.mentaframework.org/
* Tapestry - Framework MVC para Java - http://tapestry.apache.org/tapestry5
* VRaptor - Framework controlador MVC para Java - http://www.vraptor.com.br/
* WebWork - Framework MVC para Java. - http://www.opensymphony.com/webwork
* Neo Framework - Framework MVC para Java. - http://www.neoframework.org
* Spring MVC - Framework MVC para Java. - http://www.springframework.org/
* JSF - Framework MVC para Java. - http://java.sun.com/javaee/javaserverfaces/
* Click Framework - Framework MVC para Java. -http://incubator.apache.org/click/

Perl

* Catalyst - Framework MVC escrito em Perl - http://catalyst.perl.org

PHP

* CakePHP - Framework MVC para PHP 4 - http://www.cakephp.org/
* CodeIgniter - Framework MVC para PHP 4 - http://www.codeigniter.com/
* Kohana Framework - Framework em PHP no padrão MVC - http://www.kohanaphp.com.br
* LightVC - Framework leve em PHP 5 no padrão MVC - http://lightvc.org/
* PHPonTrax - Framework MVC para PHP 5 - http://www.phpontrax.com
* PRADO - Framework MVC para PHP 5 - http://www.pradosoft.com
* Spaghetti* - Framework em PHP 5 no Padrão MVC - http://spaghettiphp.org/
* Symfony - Framework MVC para PHP 5 - http://www.symfony-project.com/
* XPT Framework - Framework em PHP 5 no padrão MVC - http://xpt.alexsandro.com.br
* Zend Framework - Framework em PHP 5 no padrão MVC - http://framework.zend.com

Python

* Django - Framework escrito em Python que contempla MVC - http://www.djangoproject.com/
* TurboGears - framework baseado em várias outras tecnologias existentes no mundo que gira em torno da linguagem Python - http://turbogears.org

Ruby

* Rails - Conjunto de frameworks, incluindo MVC, para Ruby - http://www.rubyonrails.org/

Microsoft MVC Framework

* Microsoft MVC Framework - Framework MVC nativo para desenvolvimento de aplicativos ASP.NET - http://www.asp.net/

Fonte: Wikipédia

Creative Commons Esta obra está licenciada sob uma Licença Creative Commons. Você pode copiar, distribuir, exibir, executar, desde que seja dado crédito ao autor original (Citando nome do autor, data, local e link de onde tirou o texto). Você não pode fazer uso comercial desta obra. Você não pode criar obras derivadas.
Vote no artigo:

Compartilhe:

[x] Fechar Preencha os campos abaixo para indicar esta página:
Seu nome:
Seu e-mail:
Nome do indicado:
E-mail do indicado:
Deixe uma mensagem:
Anti-spam:

(nova imagem)
Preencha o que vê:
Twitter diHITT Facebook delicious envie por e-mail comentar

comentarComentários:

Preencha o formulário para comentar:

[x] Fechar
Nome:*
E-mail:* (não será exibido)
Site: (http://)
Comentário:*
Anti-spam:

(nova imagem)
Preencha o que vê:

Deseja receber as respostas dos comentários

Rógel Garcia
Publicado em:
28/02/2010 - 12:17
Outra opção de Framework MVC Java: Next Framework ( http://www.nextframework.org )

Esse framework, evoluiu do framework Neo citado no artigo.