MVC - O padrão de arquitetura de software
Neste tutorial vamos conhecer um pouco sobre o padrão MVC. Model-view-controller (MVC) é um padrão de arquitetura de software. Com o aumento da complexidade das aplicações desenvolvidas torna-se funda...
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
Resposta em até 24 horas! (grátis)Dúvidas?
|
Jonathan Lamim Antunes Graduando em Sistemas de Informação pela UNISA/SP, e programador web da Fivecom - Soluções em web 2.0, uma empresa do grupo Rede Gazeta, afiliada da Rede Globo. |
Últimas matérias escritas pelo autor:
17/08 - Introdução à compressão GZIP de um sit...
02/08 - Imprimindo áreas isoladas de uma págin...
22/06 - Criando um Cliente para Twitter com PH...
17/06 - Twitter - Enviando posts para o Twitte...
15/06 - Twitter - Fazendo conexões com o Twitt...
13/06 - Twitter - Integrando API do Twitter, c...
10/06 - Twitter - Introdução à API do Twitter ...
08/06 - Amazon Product Advertising API
26/05 - Previsão do Tempo com a API do Google ...
20/05 - Inserindo o teclado virtual do Google ...
19/05 - Gerando PDFs com PHP e a classe FPDF -...
17/05 - Gerando PDFs com PHP e a classe FPDF -...
14/05 - Gerando PDFs com PHP e a classe FPDF -...
- Como fazer um fluxograma?
Aprenda a fazer um fluxograma com alguns programas... - O que é preciso saber para se criar um s...
Saiba aqui tudo, ou quase tudo o que é necessário ... - Dicas para criar páginas no Front Page
Muitos que conheço, inclusive eu começaram a mexer... - 20 Dicas para melhorar suas apresentaçõe...
Todos que usam o computador hoje em dia, mesmo sem...






RIA - Rich Internet Application
O que você procura para sua vida profissional?
O planejamento agrega valor
E-mail marketing em 140 caracteres
Novos iPods, novo iOS, novo iTunes e nova Apple TV
Conheça as 100 primeiras cidades atendidas pelo Banda Larga ...
Linus Torvalds diz que mercado já se rendeu ao Linux