MVC: diferenças entre revisões

Conteúdo apagado Conteúdo adicionado
79a (discussão | contribs)
m Desfeita(s) uma ou mais edições de Iuuuk, com Reversão e avisos
Bini247 (discussão | contribs)
foram adicionadas mais informações sobre as camadas, sobre a história, aplicações web, uma seção somente sobre as vantagens e desvantagens do mvc, e foram adicionadas informações na justificativa.
Linha 9:
 
== História ==
OA padrãoarquitetura MVC (Model-View-Controller) foi descritocriada pelanos primeiraanos 80 na Xerox Parc, por Trygve Reenskaug, que veziniciou em 1979 o que viria a ser o nascimento do padrão de projeto MVC. A implementação original foi descrita no artigo “Applications Programming in Smalltalk-80: How to use Model-View-Controller”. <ref>[http://heim.ifi.uio.no/~trygver/themes/mvc/mvc-index.html Trygve M. H. Reenskaug/MVC]—XEROX PARC 1978-79</ref> por [[Trygve Reenskaug]], que trabalhava no [[Smalltalk]], na [[Mc|Xerox PARC]].
 
== Interação dos componentes ==
Linha 17:
* Um '''controlador''' ('''controller''') envia comandos para o modelo para atualizar o seu estado (por exemplo, editando um documento). O controlador também pode enviar comandos para a visão associada para alterar a apresentação da visão do modelo (por exemplo, percorrendo um documento).
* Um '''modelo''' ('''model''') armazena dados e notifica suas visões e controladores associados quando há uma mudança em seu estado. Estas notificações permitem 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''') Gera uma representação (Visão) dos dados presentes no modelo solicitado, fazendo a exibição dos dados, sendo ela por meio de um html ou xml.
 
== Uso em aplicações web ==
ApesarMesmo detendo sido desenvolvida originalmenteinicialmente para computação pessoal, o MVC foi amplamentedrasticamente adaptado como uma arquitetura para as aplicações [[World Wide Web]]web em todas asdas maiores linguagens de programação maiores. Muitos [[Framework para aplicações Web|frameworks de aplicação]] comerciais e não comerciais foram criadosdesenvolvidos tendo como base esse modelo. EstesTais frameworks variam em suas interpretações, principalmente no modo que as responsabilidades MVC são divididasseparadas entre o [[Cliente-servidor|cliente e servidor]].
 
Os frameworks web MVC mais recentes levam uma abordagem de [[thin client]] que colocou quase colocou 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 (HTML)|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.js|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 <code>GET</code> ou <code>POST</code> 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
 
== Vantagens e desvantagens ==
'''Vantagens do modelo MVC:'''
 
# Como o modelo MVC gerencia múltiplos views usando o mesmo modelo é fácil manter, testar e atualizar sistemas compostos;
# É muito simples adicionar novos clientes apenas incluindo seus views e controles;
# Torna a aplicação escalável;
# É possível ter desenvolvimento em paralelo para o modelo, visualizador e controle pois são independentes;
# Facilita o reuso do código;
# Melhor nível de sustentabilidade, pois facilita a manutenção da aplicação;
# Melhor performance, graças a separação em camadas;
# Fácil transformação da interface, sem que haja necessidade de modificar a camada de negócio;
# Melhor desempenho e produtividade, graças a estrutura de pacotes modulares;
# A arquitetura modular permite aos desenvolvedores e designers desenvolverem em paralelo;
# Partes da aplicação podem ser alteradas sem a necessidade de alterar outras.
 
'''Desvantagens do modelo MVC:'''
 
# necessita de um valor maior de tempo para explorar e modelar o sistema;
# Requer mão-de-obra especializado;
# À medida que o tamanho e a complexidade do projeto crescem, a quantidade de arquivos e pastas continuará aumentando também. Os interesses de UI (interface do usuário) (modelos, exibições, controladores) se localizam em várias pastas, que não são formadas em grupos por ordem alfabética.
 
== Justificativa ==
A popularidade dessa arquitetura pode ser vista principalmente no desenvolvimento de aplicações WEB. Isso é uma consequência do ambiente ter um alcance ilimitado e com constante crescimento, onde a escalabilidade é um dos fatores mais importantes.
 
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 estetal 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.
 
A separação de propósitos que o paradigma MVC propõem ajuda na escalabilidade e padronização de um produto. Manter um código que cresce constantemente em grandes corporações é uma tarefa árdua, e pequenas equipes também podem sofrer para aumentar a escalabilidade de um produto se não houver um preparo.
 
Essa divisão de preocupações, ajuda na separação de tarefas e torna-as mais específicas, uma consequência disso é que os códigos possuem um propósito melhor definido, o que facilita no teste e no contexto de seu desenvolvimento e na reutilização do mesmo.
 
== Plataformas de desenvolvimento ==