You are on page 1of 3

MVC

Origem: Wikipdia, a enciclopdia livre.

Um diagrama simples exemplificando a relao entre Model, View e Controller. As linhas slidas indicam associao direta e as tracejadas indicam associao indireta.

Model-view-controller (MVC), em portugus modelo-viso-controlador, um modelo de arquitetura de software que separa a representao da informao da interao do usurio com ele. O modelo (model) consiste nos dados da aplicao, regras de negcios, lgica e funes. Uma viso(view) pode ser qualquer sada de representao dos dados, como uma tabela ou um diagrama. possvel ter vrias vises do mesmo dado, como um grfico de barras para gerenciamento e uma viso tabular para contadores. O controlador (controller) faz a mediao da entrada, convertendo-a em comandos para o modelo ou viso. As ideias centrais por trs do MVC so a reusabilidade de cdigo e separao de conceitos.
ndice
[esconder]

1 Histria 2 Interao dos componentes 3 Uso em aplicaes web 4 Justificativa 5 Plataformas de desenvolvimento

o o o o o o o o o

5.1 ActionScript 3 5.2 ASP 5.3 .NET 5.4 Harmony 5.5 Java 5.6 Perl 5.7 PHP 5.8 Python 5.9 Ruby

6 Referncias 7 Ver tambm 8 Leitura adicional

Histria[editar | editar cdigo-fonte]

O padro MVC foi descrito pela primeira vez em 1979 por Trygve Reenskaug, que trabalhava no Smalltalk, na Xerox PARC. A implementao original descrita em profundidade no artigo de Steve Burbeck, Ph.D. com o ttulo: "Applications Programming in Smalltalk-80: How to use 2 ModelViewController".

Interao dos componentes[editar | editar cdigo-fonte]


Alm de dividir a aplicao em trs tipos de componentes, o desenho MVC define as interaes entre eles. Um controlador (controller) pode enviar comandos para sua viso associada para alterar a apresentao da viso do modelo (por exemplo, percorrendo um documento). Ele tambm pode enviar comandos para o modelo para atualizar o estado do modelo (por exemplo, editando um documento). Um modelo (model) notifica suas vises e controladores associados quando h uma mudana em seu estado. Esta notificao permite que as vises produzam sadas atualizadas e que os controladores alterem o conjunto de comandos disponveis. Uma implementao passiva do MVC monta estas notificaes, devido a aplicao no necessitar delas ou a plataforma de software no suport-las. A viso (view) solicita do modelo a informao que ela necessita para gerar uma representao de sada.

Uso em aplicaes web[editar | editar cdigo-fonte]


Apesar de desenvolvida originalmente para computao pessoal, o MVC foi amplamente adaptado como uma arquitetura para as aplicaes World Wide Web em todas as linguagens de programao maiores. Muitos frameworks de aplicao comerciais e no comerciais foram criados tendo como base esse modelo. Estes frameworks variam em suas interpretaes, principalmente no modo que as responsabilidades MVC so divididas entre o cliente e servidor. Os frameworks web MVC mais recentes levam uma abordagem de thin client que colocou quase o modelo, a viso e a lgica do controlador inteiros no servidor. Nesta abordagem, o cliente envia requisies de hiperlink ou entrada de formulrio ao controlador e ento recebe uma pgina web completa e atualizada (ou outro documento) da viso. 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 tambm AJAX). Um caso prtico uma aplicao web em que a viso um documento HTML (ou derivado) gerado pela aplicao. O controlador recebe uma entrada GET ou POST aps um estmulo do utilizador e decide como process-la, invocando objetos do domnio para tratar a lgica de negcio, e por fim invocando uma viso para apresentar a sada

Justificativa[editar | editar cdigo-fonte]


Com o aumento da complexidade das aplicaes desenvolvidas, sempre visando a programao orientada a objeto, torna-se relevante a separao entre os dados e a apresentao das aplicaes. Desta forma, alteraes feitas no layout no afetam a manipulao de dados, e estes podero ser reorganizados sem alterar o layout.

Esse padro resolve este problema atravs da separao das tarefas de acesso aos dados e lgica de negcio, lgica de apresentao e de interao com o utilizador, introduzindo um componente entre os dois: o controlador.

Plataformas de desenvolvimento[editar | editar cdigo-fonte]