MVC

Origem: Wikipédia, a enciclopédia livre.
Ir para: navegação, pesquisa
Um diagrama simples exemplificando a relação entre Model, View e Controller. As linhas sólidas indicam associação direta e as tracejadas indicam associação indireta.

Model-view-controller (MVC), em português modelo-visão-controlador, é um modelo de arquitetura de software que separa a representação da informação da interação do usuário com ele. O modelo (model) consiste nos dados da aplicação, regras de negócios, lógica e funções. Uma visão (view) pode ser qualquer saída de representação dos dados, como uma tabela ou um diagrama. É possível ter várias visões do mesmo dado, como um gráfico de barras para gerenciamento e uma visão tabular para contadores. O controlador (controller) faz a mediação da entrada, convertendo-a em comandos para o modelo ou visão. As ideias centrais por trás do MVC são a reusabilidade de código e separação de conceitos.

História[editar | editar código-fonte]

O padrão MVC foi descrito pela primeira vez em 19791 por Trygve Reenskaug, que trabalhava no Smalltalk, na Xerox PARC. A implementação original é descrita em profundidade no artigo de Steve Burbeck, Ph.D. com o título: "Applications Programming in Smalltalk-80: How to use Model–View–Controller".2

Interação dos componentes[editar | editar código-fonte]

Além de dividir a aplicação em três tipos de componentes, o desenho MVC define as interações entre eles.

  • Um controlador (controller) pode enviar comandos para sua visão associada para alterar a apresentação da visão do modelo (por exemplo, percorrendo um documento). Ele também pode enviar comandos para o modelo para atualizar o estado do modelo (por exemplo, editando um documento).
  • Um modelo (model) notifica suas visões e controladores associados quando há uma mudança em seu estado. Esta notificação permite que as visões produzam saídas atualizadas e que os controladores alterem o conjunto de comandos disponíveis. Uma implementação passiva do MVC monta estas notificações, devido a aplicação não necessitar delas ou a plataforma de software não suportá-las.
  • A visão (view) solicita do modelo a informação que ela necessita para gerar uma representação de saída.

Uso em aplicações web[editar | editar código-fonte]

Apesar de desenvolvida originalmente para computação pessoal, o MVC foi amplamente adaptado como uma arquitetura para as aplicações World Wide Web em todas as linguagens de programação maiores. Muitos frameworks de aplicação comerciais e não comerciais foram criados tendo como base esse modelo. Estes frameworks variam em suas interpretações, principalmente no modo que as responsabilidades MVC são divididas entre o cliente e servidor.

Os frameworks web MVC mais recentes levam uma abordagem de thin client que colocou quase o modelo, a visão e a lógica do controlador inteiros no servidor. Nesta abordagem, o cliente envia requisições de hiperlink ou entrada de formulário ao controlador e então recebe uma página web completa e atualizada (ou outro documento) da visão. O modelo existe inteiramente no servidor. Como as tecnologias de cliente amadureceram, frameworks como JavaScriptMVC e Backbone foram criados o que permite que os componentes MVC executem parcialmente no cliente (ver também AJAX).

Um caso prático é uma aplicação web em que a visão é um documento HTML (ou derivado) gerado pela aplicação. O controlador recebe uma entrada GET ou POST após um estímulo do utilizador e decide como processá-la, invocando objetos do domínio para tratar a lógica de negócio, e por fim invocando uma visão para apresentar a saída

Justificativa[editar | editar código-fonte]

Com o aumento da complexidade das aplicações desenvolvidas, sempre visando a programação orientada a objeto, torna-se relevante a separação entre os dados e a apresentação das aplicações. Desta forma, alterações feitas no layout não afetam a manipulação de dados, e estes poderão ser reorganizados sem alterar o layout.

Esse padrão resolve este problema através da separação das tarefas de acesso aos dados e lógica de negócio, lógica de apresentação e de interação com o utilizador, introduzindo um componente entre os dois: o controlador.

Plataformas de desenvolvimento[editar | editar código-fonte]

ActionScript 3[editar | editar código-fonte]

ASP[editar | editar código-fonte]

.NET[editar | editar código-fonte]

Harmony[editar | editar código-fonte]

Java[editar | editar código-fonte]

Perl[editar | editar código-fonte]

PHP[editar | editar código-fonte]

Python[editar | editar código-fonte]

Ruby[editar | editar código-fonte]

Referências

Ver também[editar | editar código-fonte]

Leitura adicional[editar | editar código-fonte]

Ícone de esboço Este artigo sobre Informática é um esboço. Você pode ajudar a Wikipédia expandindo-o.