MVC(Model, View e Controller) O QUE É?



Hi Folks,

Vamos para o segundo post, falar um pouco sobre o que é (MVC)....
Sabe MVC, aquilo mesmo que muitas vezes alguns amigos seu dizem para mostrar que conhecem algo de programação rsrsrsrs....

Hoje em dia muitas empresas estão utilizando frameworks do padrão MVC, para o desenvolvimento de seus aplicativos/sites e deixando para trás o antigo método procedural. O MVC (Model, View e Controller)/( Modelo, Visualização e Controlador ) é uma arquitetura ou padrão que lhe permite dividir as funcionalidades de seu sistema/site em camadas, essa divisão é realizada para facilitar resolução de um problema maior.


MAS PQ TEM QUE MUDAR?
Vamos la, ver o que é o MVC, e então você vai entender, o por que de mudar. Por isso, não fique preso a paradigmas, arquiteturas, padrões ou tecnologias, pois é de grande importância que você se atualize. E agora chegou a hora em que você irá entender o conceito e como funciona o “famoso” MVC. O MVC (Model, View e Controller) é uma arquitetura  ou padrão que lhe permite dividir as funcionalidades de seu sistema/site em camadas, essa divisão é realizada para facilitar resolução de um problema maior.

Como diria Jack, o Estripador vamos por partes:

M (Model/Modelo)


Esta “camada” representa os dados da aplicação e as regras de negócio do acesso e modificação desses dados. Ela é quem fornece ao controlador a capacidade de acessar as funcionalidades da aplicação(Insert, Update, Delete).

Ultimamente tenho lido alguns forúns (alguns bem antigos por sinal) e percebi uma certa discussão sobre o que deve ficar no Model. Alguns dizem que a regra de negócio deve ficar no Model, mas eu particularmente acho bem mais interessante deixar o Model como sendo a DAL. Uma “camada” onde são tratadas as ações de Insert, Update, Delete e Select.

V (View/Visualização)

As Views servem apenas para exibir as informações. São elas que renderizam o conteúdo de uma parte particular do modelo e encaminha para o controlador as ações do usuário. A View também acessa os dados do modelo através do controlador (Controller) e determina como esses dados devem ser apresentados.
Bom, comparando ainda com o modelo 3-tier (3 Camadas) essa seria a Interface.

C (Controller/Controlador)

O controller define o comportamento da aplicação, é ele que interpreta as ações do usuário (View) e as mapeia para chamadas do modelo (Model).
Aqui sim ficaria a regra de negócio do nosso projeto. Grande partes dos post que li, tem colocado o controller como uma “gatilho” que serve apenas para disparar e identificar quais ações devem ser executadas no Model, mas para mim o Controller seria nossa BLL do modelo 3-tier.
Bom, é claro que esse é meu ponto de visto sobre como se pode utilizar este modelo.
Aqui estou apresentando uma imagem baseada em um modelo que realmente não me lembro onde vi. Ela mostra como são realizadas as requisições:

Agora vamos dar uma olhadinha, em como funciona um projeto com MVC e um projeto sem MVC. Vamos imaginar uma situação onde o usuário tem que se logar em seu site, inserindo login e senha e clicando no botão "Logar".

Projeto Sem MVC:

Primeiramente, o usuário preenche o formulário com seu login e sua senha e pressiona o botão “Logar”. 

Depois disso, o formulário envia essas informações para um arquivo onde, no mesmo arquivo, você executa as seguintes etapas:

1. Armazena em variáveis os dados digitados pelo usuário;
2. Montam um comando SQL para selecionar o usuário;
3. Verifica se retornou alguma informação;
  • Se retornar alguma informação, armazena o usuário em uma sessão e redireciona para a área restrita;
  • Se não retornar nenhuma informação, redireciona para a página de login com uma mensagem notificando que a combinação digitada é inválida;
Projeto Com MVC:

Primeiramente, o usuário preenche o formulário com seu login e sua senha e pressiona o botão “Logar”. Agora veremos algumas mudanças. 

Depois disso, o formulário envia essas informações para uma controladora, e essa controladora realizará as seguintes etapas:

1. A controladora (controller) carrega um modelo (model), e executa um método que realiza a validação;
2. No modelo (model) são executadas as seguintes tarefas:
  • Armazena as informações digitadas pelo usuário;
  • Realiza a consulta. Caso retornando verdadeiro (true) em caso de sucesso, ou falso (false) no caso da combinação das informações digitadas serem inválidas;

3. A controladora (controller) verifica o que o modelo retornou;
  • Se retornar verdadeiro (true) armazena as informações em uma sessão e redireciona o usuário para visão (view) da área restrita;
  • Se retornar falso (false) redireciona o usuário de volta para a tela (view) de login repassando a mensagem que a combinação digitada é inválida;


Agora você pode ficar se perguntando, mas do modo que eu faço também funciona?


Pode ser que sim, ma imagine ter que alterar a regra de negócio. Antes de utilizar MVC você precisaria abrir o arquivo que realiza todas as tarefas e localizar a sua regra, para depois alterar. No caso do MVC, você já sabe onde se encontra as suas regras de negócio, então você vai direto ao arquivo. Por isso que a maioria dos frameworks já vem com sua estrutura de diretórios pronta, facilitando a localização dos arquivos.
TUDO FAZ SENTIDO AGORA



Comentários

  1. Parabéns me ajudou muito, Valeu! Só uma observação, vc inverteu o modelo de exemplo "Com MVC" e "Sem MVC" colocando o exemplo "Sem MVC" como "Com MVC" e vice e versa.

    ResponderExcluir

Postar um comentário

Postagens mais visitadas deste blog

Função para Formatar CEP, CPF, CNPJ e TELEFONE

Sem som no Ubuntu. Resolvido!

Definir / Midificar / Resetar senha root no MySQL