O que é o MVC - Model View Controller

Postado por: Tiago Lemos em 10th jul, 2009 | Categoria: ASP.NET, MVC, Microsoft, PHP

Há certo tempo recebi dois e-mails sobre com alguns questionamentos sobre MVC, que hoje em dia tem sido muito falado por todos (principalmente pelo programadores de .NET). O objetivo deste post é tentar esclarecer o que é o Design Patterns (Padrões de Projeto) MVC.

Bom, MVC significa Model, View e Controller. A ideia básica do MVC é de separar a lógica de negócio da apresentação (muito semelhante ao modelo de 3 Camadas. Bom, posso estar enganado e se estiver por favor comentem pois este é o objetivo). Vamos entender o que significa própriamente cada uma da letras.

M (Model)

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)

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)

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:

1 - O usuário realiza uma requisição de uma View (página web) ao Controller. Ex: Preenchimento do formulário de cadastro.

2 - O Controller recupera todas as informações da View e solicita uma ação (Insert por exemplo) para o Model. O Model processa a ação (grava em banco de dados) e devolve o resultado deste processamento para o Controller.

3 - O Controller processa o resultado e devolve para View o que ela deve exibir.

4 - A View recebe o que foi processado pelo Controller e exibe o resultado para o usuário. (Enteda a View como a página exibida) Ex: Imaginando um cadastro que foi realizado com sucesso, o retorno pode ser uma Mensagem de Sucesso.

Em resumo o modelo MVC é muito usado em aplicações para  Web, onde a View é a página  HTML, o controller é quem gera os dados dinâmicos para dentro da View (HTML) e o Model é representado pelo manutenção dos dados, ou seja, armazenagem em BD ou outros tipos de arquivos.

Bom, espero que com este post eu possa ter esclarecido um pouco como funciona esse Design Pattern. A idéia é simples mas pode confundir um pouco, mas nada uma boa leitura não ajude.

Em breve tem mais.

4 Comentários para “ O que é o MVC - Model View Controller ”

  1. C# Brasil » O que é o MVC – Model View Controller disse,

    [...] indicar um ótimo artigo para você que é iniciante em ASP.NET MVC. O artigo explica claramente o que é o MVC – Model View Controller, artigo esse postado pelo Tiago [...]

  2. Emerson Jose disse,

    Então só para tirar minha duvida eu comecei a pouco tempo em programação e sempre olhei o código dos outros programadores e baseado neles fiz meio que padrão de trabalho mais eu tava lendo esse artigo e bateu uma duvida exemplo do meu dia a dia quando vou desenvolver seria assim:

    tenho minha primeira camada a Model:

    private string titulo;

    public string Titulo
    {
    get { return titulo; }
    set { titulo = value; }
    }

    ai depois tenho minha camada DALL

    aonde fica Insert , Delete tal;

    no final crio a minha terceira camada BLL

    essa uso para retorna os métodos utilizados na camada DAL

    public int Atualizar(perfil n)
    {
    return new perfilDAL().Atualizar(n);
    }

    então agora falando o ponto aonde que to confuso no caso MVC
    minha camada M corresponde a DAL
    e a V: seria minha Model
    é se C seria a BLL seria isso?

  3. Tiago Lemos disse,

    Emerson,
    Criando uma comparação entre 3 camadas e MVC, acho que vc poderia dizer o seguinte:
    M == DAL
    V == UI (Página - User Interface)
    C == BLL
    Mas isto é uma visão bem superficial.

  4. Conhecendo o pattern MVC – Model View Controller « Vitor A. Vale disse,

    [...] Wikipédia, MVC Wikipédia ficheiro de imagens, ModelViewControllerDiagram.svg Tiago Lemos, O que é o MVC – Model View Controller [...]

     Deixe seu comentário:





trackback Trackback URI | rsscomment RSS dos comentários