MVC
Origem: Wikipédia, a enciclopédia livre.
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.
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.
Índice |
[editar] Descrição do Padrão
É comum dividir a aplicação em camadas separadas: apresentação (interface), domínio e acesso a dados. Em MVC a camada de apresentação também é separada da view e da controller.
- 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 à 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.
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:
- O usuário interage com a interface de alguma forma (por exemplo, o usuário aperta um botão)
- O Controller manipula o evento da interface do usuário através de uma rotina pré-escrita.
- 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).
- 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.
- A interface do usuário espera por próximas interações, que iniciarão o ciclo novamente.
[editar] 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.
[editar] Frameworks MVC
[editar] ActionScript 3
- PureMVC - Framework para ActionScript 3 - http://puremvc.org/
[editar] 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/
[editar] Perl
- Catalyst - Framework MVC escrito em Perl - http://catalyst.perl.org
[editar] PHP
- CakePHP - Framework MVC para PHP - http://www.cakephp.org/
- CodeIgniter - Framework MVC para PHP - http://www.codeigniter.com/
- Symfony - Framework MVC para PHP - http://www.symfony-project.com/
- XPT Framework - Framework em PHP no padrão MVC - http://xpt.alexsandro.com.br
- Zend Framework - Framework em PHP no padrão MVC - http://framework.zend.com
[editar] 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
[editar] Ruby
- Rails - Conjunto de frameworks, incluindo MVC, para Ruby - http://www.rubyonrails.org/