CriandoBits
Identifique-se Entrar Esqueceu a senha? Esqueci minha senha

Programação - Arquitetura MVC

Por Benedito Silva Júnior - publicado em 02/08/2016


Model-view-controller (MVC), em português "modelo-visão-controlador", é um padrão de projeto de software que separa a representação da informação da interação do usuário com ele.
Diagrama MVC

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.

O padrão MVC foi descrito pela primeira vez em 1979 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". 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.

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

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.

O padrão MVC está relacionado com a arquitetura da aplicação e em como os componentes se comunicam. A arquitetura em 3 camadas está relacionada com a arquitetura do sistema onde é dividida as responsabilidades em camada de apresentação, de negócio e de acesso aos dados.

Os conceitos se complementam e podem coexistir harmonicamente sem conflitos. É possível usar o padrão MVC para a camada de apresentação de uma arquitetura em camadas. (O padrão MVC também pode ser aplicado em aplicações usando apenas uma camada.)

Conceitualmente a arquitetura de três camadas é linear. No entanto, a arquitetura MVC é triangular: a view envia atualizações para o controlador, o controlador atualiza o modelo, e a view é atualizada diretamente do modelo. O padrão MVC define uma abordagem para a interação entre a apresentação e os componentes de domínio do negócio. Além disso, o padrão MVC não está relacionado com outros problemas de aplicação, como persistência, segurança e escalabilidade.

A arquitetura "n-tier" é um padrão de implantação: uma forma de organizar a infraestrutura para a execução das aplicações desenvolvidas. Uma aplicação web pode ser implantada em três camadas: cliente, aplicações web e de dados. Basicamente, alguns componentes da aplicação podem ser implementados em um conjunto de máquinas do cliente, outros componentes em um conjunto de servidores de aplicativos web e outros componentes em um conjunto de hosts do servidor de dados.

Levando em conta estes três níveis, o padrão MVC define uma abordagem para conectar componentes de apresentação na camada do cliente (por exemplo, um celular ou aplicação de internet), com alguns componentes de serviços na camada de aplicação web. O MVC não define nada sobre a interação entre a camada de aplicação web e a camada de dados.


 
Voltar a página anteriorVoltarSubir ao topo desta páginaTopo