O que é o MVC e como nos pode ajudar

Web development under scope

Calendário

Volta Janeiro '09
Se Te Qu Qu Se Do
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31  

Administração do weblog

Terça, 27 de Novembro de 2007

O que é o MVC e como nos pode ajudar

PHP

Olá, como primeiro post gostaria de explicar um conceito que apesar de não ser novo, ainda gera alguma confusão entre programadores. Vou falar de MVC, e como pudemos tirar partido deste modelo ao desenhar aplicações PHP.

Ok, então MVC  significa Model View Controller e é um tipo de arquitectura de design de software, parece complicado mas não é, até é bastante simples, este tipo de arquitectura separa a nossa aplicação em três camadas distintas, apresentação (User Interface), Logica da aplicação, e acesso aos dados.

Vamos ver mais detalhadamente quais as funções de cada uma destas partes.

As views, são estruturas destinadas á apresentação do conteudo, á forma como apresentamos esse conteudo aos utilizadores. Nas views, vamos colocar o HTML incluir os ficheiros CSS e JavaScript da aplicação, no fundo tudo o que regula e sustenta a forma como visualizamos a aplicação.

Models ou Modelos, ao contrário das views os modelos são o local ideal para lidar com a logica da aplicação, recolher dados de uma base de dados, ou ficheiro, redimencionar imagens, executar operações, no fundo todo o tipo de operações que a aplicação executa entre o click do utilizador e a apresentação dos dados será levada a cabo pelos modelos.

E Finalmente os controladores (Controllers), o que fazem? simples controlam. Os controladores são responsáveis por receber o pedido do cliente e decidem qual modelo chamar para aquele pedido expecifico, recebem os dados recolhidos e trabalhados pelo modelo e decidem qual a view (ou template) a renderizar fornecendo-lhe todos os dados necessários. Assim os controladores são quem controla todo o fluir da aplicação, decidindo o que carregar e executar para cada pedido.

Ok, até aqui tudo bem, mas quais as vantagens reais de usar esta arquitectura? são varias:

Primeira, e possívelmente a mais importante, é a possibilidade de ter multiplas views baseadas no mesmo modelo. Hoje em dia existe uma crescente exigência de novas formas de acesso a uma aplicação. A solução é o uso de MVC. Porquê? porque com MVC, não interessa se o utilizador que uma aplicação com o interface em Flash, Ajax, ouWAP, porque o mesmo modelo pode tratar de tudo, assim a duplicação de código é limitada porque separamos a logica do interface.

Proque o modelo retorna dados sem aplicar qualquer formatação, os mesmo componentes podem ser chamados e usados com qualquer interface. Por exemplo, na maioria dos casos os dados são formatados com HTML, mas também podem ser formatados usando o Adobe Flash ou WAP. O modelo também isola e manuseia estados e persistencia de dados. Por exemplo, um site em Flash ou uma aplicação wireless podem as duas usar o mesmo sistema de sessions e os mesmo processos de e-commerce.

Porque o modelo é auto-contido e completamente separado do controlador e das views, torna-se muito mais facil alterar dados na aplicação ou a forma como esses dados são tratados. Imagine que muda de base de dados, digamos de MySQL para Oracle, apenas necessita de mudar o modelo. Se implementado correctamente, a view não quer saber se a lista de utilizadores veio da base de dados MySQL ou de outro sitio qualquer.

O conceito do controlador também trás beneficios. Para mim, o controlador é usado para trocar informações entre diferentes partes do modelos até á view para completar um pedido. Tendo um conjunto de blocos reutilizavel (modelos e views), o controlador escolhe quais os blocos necessários para lidar com um determinado processo (pedido) e mostrar o que foi requisitado.

Bem por agora ficamos por aqui, espero ter sido util.


Trackbacks

Nenhuns Trackbacks

Comentários
Exibir comentários como (Sequencial | Discussão)

#1 - Andre Webb said:
2007-11-27 01:34 - (Responder)

Sim realmente tens de fazer assim as coisas, a vontade de as fazer assim eh que complica ...

Um dia deste combina-mos para dar um bom exemplo do que estás a falar( como sabes eu gosto das coisas na prática )

Podemos desenvolver uma framework com uma boa lista de Classes para ajudar toda a comunidade e graficantemente pedir doações :-)

.. parabens pelo Blog

#2 - Francisco Costa 2007-11-27 13:32 - (Responder)

Pois, visto como aqui está parece simples...
O MVC está na moda, a maioria das frameworks que existem são construídas tendo em conta esta estrutura, o mais dificil é escolher a framework.
Aliás li um artigo num fórum brasileiro em que alguém ironicamente perguntava: Será que todos os programadores tem a sua framework?
Essa na realidade é uma questão interessante, porque olhei para o meu sistema e vi que as classes que já tenho e normalmente reutilizo podem ser quase consideradas uma framework e que até por acaso tem evoluído no sentido de se aproximar com o modelo MVC. Será que acontece isso como todos os programadores que apesar de não usarem uma framework existente parece que tendem a construir a sua própria framework?!

#2.1 - Miguelp 2007-11-27 19:48 - (Responder)

Ok vamos por partes, o conseito de MVC sim é bastante simples, acredita, mas deixa alguns pontos em aberto de forma que os programadores por vezes implementam MVC de formas ligeiramente diferentes, embora os conseitos basicos são apenas o que escrevi.

Passando ao segundo tema, acho que estas a confundir um pouco as coisas, uma coisa são frameworks, elas ajudam-te a construir aplicações de forma mais rápida, mas normalmente obrigam-te a seguir um tipo de estrutura, seja ela MVC ou outra pattern qualquer (posso falar disso em outro post), outra coisa bem diferente é ter um conjunto de classes (podes chamar-lhes componentes se quiseres) que utilizamos nos nossos projectos, um exemplo o EZcomponents é um conjunto de classes que facilitam muitas coisas que fazemos com frequencia numa aplicação, mas são eles uma framework? não, não são.
O que a maioria dos programadores ja com alguma experiencia tem é um conjunto de componentes pre prontos que reaproveita para novos projectos, não uma framework.

#3 - Eduardo 2007-11-27 23:03 - (Responder)

por falar em frameworks.

alguma sugestão de uma boa framework?

eu sou daqueles programadores miguelp que tenho um conjunto de componentes pre prontos que reaproveita para novos projectos.

#3.1 - miguelp 2007-11-27 23:30 - (Responder)

Boas, eduardo

Eu tambem uso um conjunto de componentes, que reaproveito para novos projectos, e por vezes até integro alguns deles com frameworks.

Opá quanto a frameworks vai do tipo de trabalho que queres fazer, e mas posso dar-te 2 que gosto pessoalmente, a CodeIgniter e a ZF (Zend Framework).


Adicionar Comentários

Asteriscos à volta duma palavra (*palavra*) marcam-na como negrito, sublinhados são feitos com _palavra_.
Smilies normais como :-) e ;-) são convertidos em imagens.
Les adresses Email ne sont pas affichées, et sont seulement utilisées pour la communication.

Para evitar o spam por robots automatizados (spambots), agradecemos que introduza os caracteres que vê abaixo no campo de formulário para esse efeito. Certifique-se que o seu navegador gere e aceita cookies, caso contrário o seu comentário não poderá ser registado.
CAPTCHA