Esclarecendo e entendendo o MVC

Autor: Jota Vicente Romualdo Júnior
Url: http://blog.jotajunior.com.br/?p=38


Irei mostrar aqui uma forma bem sintática de explicar o MVC e caracteristicas pendentes que até hoje é muito discutida em fóruns.

Como sabemos, para desenvolver com qualidade é necessário desenvolver orientado a objetos. Alguns malucos falarão que "procedural" também vale, mas sabemos que para coisas de grandes dimensões ou organizadas, a orientação a objetos é vital para um bom trabalho.

Pois bem, de nada adianta usarmos orientação a objetos se não usamos Design Patterns, pois elas facilitam muito a estruturação de um software e, sem dúvida, uma ótima pattern é a MVC.

MVC quer dizer Model-View-Controller, quer dizer, modela o software em três camadas: O Modelo, O Controlador e o Visualizador.

O Modelo é onde tudo será processado e somente processado: lá você faz as queries, estrutura as questões de lógica do software e tudo sem se preocupar com a segurança. É lá onde fica a lógica do sistema, o "coração" ou, como desenvolvedores prezam mais essa parte do corpo, o cérebro do sistema.

Aí é que muitos desenvolvedores se perdem: Eles fazem a segurança no modelo, o que é o errado. Por interpretação, ele que fará somente a lógica, e a segurança é resultante da interação com o usuário, não é um item pressuposto a existir na lógica. Onde será tratada a segurança é no item a seguir, o C do MVC.

Controller - (ou controlador) - é o responsável por fazer a interação entre usuário e sistema, ele lida com o que vem do usuário, usar os métodos do model e processa os resultados. Aqui sim, onde se lida com a interação com o usuário, é onde se faz a segurança, pois o que pode ser inseguro é o que vem do usuário, o sistema não fará um SQL Injection ou um XSS "automaticamente" para ser tratado no modelo. Logo, o gerador de discussões segurança no MVC é feito no controller.

Agora, continuando a didática de MVC (pra quem quer aprender MVC) do Controller é essa: ele faz a interação modelo (cérebro do sistema) e usuário. Entenderam?

Já o View é o responsável por mostrar tudo ao usuário, e esse é o bom: Ele separa toda a lógica da aplicação da parte que "mostra" os dados, deixando o software com seus "departamentos" bem distintos e com menos aspecto "macarrão". E, como falamos do controller, eu disse que ele promove a interação(integração) sistema-usuário né, e devolve o processado? Pois bem, a camada View mostra de forma estruturada de acordo com seu layout o gerado pelo Controller, assim acabando com aqueles problemas clássicos da programação procedural de "pegar dados antes de mostrar na tela". Nele usamos, normalmente, o template engine Smarty e vale realmente a pena ver. Aumenta muito o desempenho e deixa o código mais "standard", facilitando seu trabalho e dando prestígio.

Tem como você até misturar patterns (adoro misturar Abstract Factory com MVC) e usar outras Patterns em uma parte da Pattern (parece confuso, mas procure por ORM e tente colocar numa parte do Model do seu MVC e verá que não é estranho como pensa, apesar que não uso muito).

E, para finalizar, segurança é no controller!

Espero ter sido útil!

Comments