Professional Documents
Culture Documents
Contedo
1 Introduo 2 Camadas: Separao Entre Componentes 3 MVC: Interao Entre Componentes 4 Concluso 5 Referncias
Introduo
A Arquitetura de Camadas muito utilizada para separar responsabilidades em uma aplicao moderna. Apesar de a idia da diviso de uma aplicao em Camadas ter se popularizado nos anos 90, muitos desenvolvedores ainda no conhecem a tcnica a fundo, boa parte por documentao ineficiente sobre este Padro Arquitetural. Junto com a popularizao da Arquitetura de Camadas, ressurgiu o modelo MVC de desenvolvimento. Este modelo foi criado em Smalltalk e traz simplicidade e coerncia interfaces. Um problema com a popularizao simultnea destes dois Padres Arquiteturais que estes passaram a ser eternamente confundidos. O objetivo deste breve artigo mostrar como MVC e Camadas so conceitos diferentes, que podem ser aplicados em conjunto ou no. Nota: O termo componente utilizado aqui para significar qualquer artefato de software. Pode ser substitudo por classe, camada, objeto ou mesmo um componente no sentido dado por Component-Based Design (CBD).
Utilizando Camadas o projetista tem um critrio a utilizar quando decide agrupar duas ou mais classes, mas o uso de Camadas no diz nada sobre como estes grupos se comunicam. O mximo que o uso de Camadas diz sobre se estas so transparentes (ou abertas) ou opacas (fechadas). Camadas transparentes no evitam que uma superior enxergue a inferior, as opacas sim. As Camadas promovem o encapsulamento (uma Camada no vai saber o que tem dentro da outra) e a coeso
Estes princpios definem a comunicao. O estmulo vindo do usurio (ou de outro componente se voc est usando MVC fora de uma interface grfica) vai para o Controller que o componente com inteligncia o suficiente para saber qual operao invocar no Model. A operao invocada pode efetuar a mudana de estado no model. Como a View observa este, assim que a mudana de estado for realizada ela atualizada. Ento o MVC em si no traz mais do que 2 regras bsicas para a comunicao entre componentes, no diz o que estes componentes contem.
Integrando Como j mencionado, possvel e muitas vezes desejvel integrar a tcnica de Camadas com o modelo de interao provido pelo MVC. Quando estamos lidando com aplicaes monolticas (no compostas por servios como em SOA- ou por componentes neste caso estamos falando de componentes de negcio, como definido por CBD). A partir do momento em que dividimos os nossos componentes em Camadas podemos aplicar o MVC nestas. Geralmente isto feito definindo a Camada de Negcios como o Model, a Apresentao como a View. O componente Controller exige um pouco mais de controle. Na maioria dos casos pode-se definir o Controller dentro da Camada de Apresentao. Esta Camada ficaria responsvel ento por mostrar o estado do Model ao usurio e receber as requisies deste. Algumas vezes, entretanto, necessrio que o Controller fique isolado desta. Este o caso, por exemplo, quando possumos mais de uma interface, como Swing e HTML. Neste caso, pode-se utilizar uma Camada que quase sempre est implcita, a Camada de Aplicao.
Concluso
Pela escassez de material disponvel compreensvel a confuso gerada pelos conceitos. De qualquer forma, possvel reduzir as diferenas a algo simples de lembrar:
Camadas dizem como agrupar os componentes. MVC diz como interagem os componentes.
E lembre-se sempre que componentes neste contexto se refere a qualquer artefato de software: classes, pginas dinmicas, scripts, objetos... Mesmo sendo a literatura sobre Camadas e MVC pouca, o suficiente para entender melhor como estes conceitos se relacionam. Confira nas referncias algumas fontes importantes para melhorar o entendimento sobre estes dois padres Arquiteturais to usados, mal e bem.
Referncias
Desenvolvendo Sistemas OO Com Padres de Negcio Arquitetura de Camadas em Java EE Patterns of Enterprise Application Architecture Retirado de "http://fragmental.com.br/wiki/index.php/MVC_e_Camadas"
Est pgina foi modificada pela ltima vez em 02:27, 22 Junho 2007. Esta pgina foi acessada 30 590 vezes. Contedo disponvel sob Attribution-Noncommercial-Share Alike 3.0 . Poltica de privacidade Sobre a Fragmental Bliki Disclaimers