MVC






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-vista-controlador, é um padrão de arquitetura de software (não confundir com um design pattern) que separa a representação da informação da interação do usuário com ele.


É normalmente usado para o desenvolvimento de interfaces de usuário que divide uma aplicação em três partes interconectadas. Isto é feito para separar representações de informação internas dos modos como a informação é apresentada para e aceita pelo usuário.[1][2] O padrão de projeto MVC separa estes componentes maiores possibilitando a reutilização de código e desenvolvimento paralelo de maneira eficiente.


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.


Tradicionalmente usado para interfaces gráficas de usuário (GUIs), esta arquitetura tornou-se popular para projetar aplicações web e até mesmo para aplicações móveis, para desktop e para outros clientes.[3] Linguagens de programação populares como Java, C#, Ruby, PHP e outras possuem frameworks MVC populares que são atualmente usados no desenvolvimentos de aplicações web.


Camada de apresentação ou visualização - Não se dedica em saber como o conhecimento foi retirado ou de onde ela foi obtida, apenas mostra a referência. Segundo Gamma et al (2006), ”A abordagem MVC separa a View e Model pelo organização de um protocolo inserção/notificação (subscribe/notify). Uma View deve garantir que sua expressão reflita o estado do Model. Sempre que os dados do Model mudam, o Model altera as Views que dependem dele. Em resposta, cada View tem a oportunidade de modificar-se”. Adiciona os elementos de exibição ao usuário : HTML, ASP, XML, Applets. É a camada de interface com o usuário. É utilizada para receber a entrada de dados e apresentar visualmente o resultado.


Camada de lógica da Aplicação - É o coração da execução . Responsável por tudo que a aplicação vai fazer.o controle de um ou mais elementos de dados, responde a perguntas sobre o sua condição e responde a instruções para mudar de posição. O modelo sabe o que o aplicativo quer fazer e é a principal estrutura computacional da arquitetura, pois é ele quem modela o problema que está se tentando resolver. Modela os dados e o comportamento por atrás do processo de negócios Se preocupa apenas com o armazenamento , manipulação e geração de dados É um encapsulamento de dados e de comportamento independente da apresentação.


Camada de Controle - É responsável por interpretar as ações de entrada através do mouse e teclado realizadas pelo usuário. O Controle (Controller) envia essas ações para o Modelo (Model) e para a janela de visualização (View) onde serão realizadas as alterações necessárias.




Índice






  • 1 História


  • 2 Interação dos componentes


  • 3 Uso em aplicações web


  • 4 Vantagens e desvantagens


  • 5 Justificativa


  • 6 Plataformas de desenvolvimento


    • 6.1 COLDFUSION


    • 6.2 ActionScript 3


    • 6.3 ASP


    • 6.4 .NET


    • 6.5 Delphi


    • 6.6 Harmony


    • 6.7 Java


    • 6.8 Perl


    • 6.9 PHP


    • 6.10 Python


    • 6.11 Ruby




  • 7 Ver também


  • 8 Referências





História |


A arquitetura MVC (Model-View-Controller) foi criada nos anos 80 na Xerox Parc, por Trygve Reenskaug, que iniciou 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”. [4]



Interação dos componentes |


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) 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 |


Mesmo tendo sido desenvolvida inicialmente para computação pessoal, o MVC foi drasticamente adaptado como uma arquitetura para as aplicações web em todas das maiores linguagens de programação.Muitos frameworks de aplicação comerciais e não comerciais foram desenvolvidos tendo como base esse modelo. Tais frameworks variam em suas interpretações, principalmente no modo que as responsabilidades MVC são separadas entre o cliente e servidor.


Os frameworks web MVC mais recentes levam uma abordagem de thin client que 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 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



Vantagens e desvantagens |


Vantagens do modelo MVC:



  1. Como o modelo MVC gerencia múltiplos views usando o mesmo modelo é fácil manter, testar e atualizar sistemas compostos;

  2. É muito simples adicionar novos clientes apenas incluindo seus views e controles;

  3. Torna a aplicação escalável;

  4. É possível ter desenvolvimento em paralelo para o modelo, visualizador e controle pois são independentes;

  5. Facilita o reuso do código;

  6. Melhor nível de sustentabilidade, pois facilita a manutenção da aplicação;

  7. Melhor performance, graças a separação em camadas;

  8. Fácil transformação da interface, sem que haja necessidade de modificar a camada de negócio;

  9. Melhor desempenho e produtividade, graças a estrutura de pacotes modulares;

  10. A arquitetura modular permite aos desenvolvedores e designers desenvolverem em paralelo;

  11. Partes da aplicação podem ser alteradas sem a necessidade de alterar outras.


Desvantagens do modelo MVC:



  1. necessita de um valor maior de tempo para explorar e modelar o sistema;

  2. Requer mão-de-obra especializado;

  3. À 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 tal 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 |



COLDFUSION |



  • ColdBox

  • FW/1

  • FarCry

  • FuseBox

  • CF Wheels

  • Mach-II

  • ColdSpring

  • ModelGlue

  • LightWire



ActionScript 3 |




  • Cairngorm - da Adobe

  • PureMVC

  • Swiz



ASP |



  • ASP Xtreme Evolution

  • Toika

  • AJAXED



.NET |




  • ASP.NET MVC - oficial da Microsoft


  • C♯ - oficial da Microsoft


  • Versões Existentes : MVC 2, MVC 3, MVC 4,MVC 5



Delphi |



  • MVCBr [5][6]


Harmony |



  • Harmony Framework - Oficial da Vilesoft


Java |



  • Apache Struts

  • Brutos Framework

  • Click Framework

  • JSF

  • Mentawai

  • MVC 1.0 (Ozark)

  • Neo Framework

  • PlayFramework

  • Spring MVC

  • Tapestry

  • VRaptor

  • WebWork



Perl |



  • Catalyst

  • Mojolicious

  • Gantry



PHP |



  • Akelos


  • CakePHP - para as versões 4 e 5


  • CodeIgniter - para as versões 4 e 5


  • FuelPHP - para versões 5.3+

  • iGrape


  • Kohana Framework - para a versão 5


  • LightVC - para a versão 5.


  • Laravel - para a versão 5.3+


  • Megiddo - para a versão 5


  • Oraculum PHP Framework - para a versão 5


  • PageletBox - IDE para Celular WAP com framework MVC embutido em PHP 5


  • Phalcon - Extensão em C visando alta performance e baixo consumo de recursos - para a versão 5

  • PHPBurn


  • PHPonTrax - para a versão 5


  • PRADO - para a versão 5

  • Seagull

  • Spaghetti*


  • Symfony - para a versão 5

  • Vórtice Framework


  • XPT Framework - para a versão 5


  • Yii Framework - para a versão 5


  • Zend Framework - da ZEND, mantenedora oficial do PHP 5 no padrão MVC


  • Zend Framework - da ZEND, mantenedora oficial do PHP 6 no padrão MVC



Python |



  • Django

  • TurboGears

  • Web2py


  • Zope / Plone



Ruby |



  • Rails

  • Merb


ADVPL


  • Microsiga Protheus


Ver também |



  • Arquitetura multicamada

  • Modelo em três camadas

  • Cliente-servidor

  • Cluster

  • Lista de protocolos de redes

  • Protocolo RPC

  • Redes de computadores

  • Sistema de processamento distribuído

  • Sockets



Referências




  1. ↑ "More deeply, the framework exists to separate the representation of information from user interaction." The DCI Architecture: A New Vision of Object-Oriented Programming – Trygve Reenskaug and James Coplien – 20 de março de 2009.


  2. ↑ Burbeck (1992): "... the user input, the modeling of the external world, and the visual feedback to the user are explicitly separated and handled by three types of object."


  3. ↑ Davis, Ian. «What Are The Benefits of MVC?». Internet Alchemy. Consultado em 29 de novembro de 2016 


  4. ↑ Trygve M. H. Reenskaug/MVC—XEROX PARC 1978-79


  5. ↑ Git/Fontes MVCBr


  6. ↑ Blog TireiDeLetra






























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



Popular posts from this blog

Willebadessen

Ida-Boy-Ed-Garten

Residenzschloss Arolsen