MVC: diferenças entre revisões

Conteúdo apagado Conteúdo adicionado
Elilopes (discussão | contribs)
sobre as camadas/componentes do MVC
Linha 1:
[[Ficheiro:ModelViewControllerDiagram2.svg|thumb|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.]]
'''Arquitetura Modelo-Visão-ControladorControle''' '''- MVC''' ({{lang-en|'''''Model-View-Controller'''''}} - '''MVC''') é um [[padrão de projeto de software|padrão de projeto]] de [[software]],<ref>https://www.youtube.com/watch?v=o_TH-Y78tt4&t=1667</ref> queou separa a representação da informação da interação do usuário com ela. Normalmente usado para o desenvolvimentopadrão de [[InterfaceArquitetura dode usuáriosoftware|interfacesarquitetura]] de usuário[[software]] queformulado dividena uma aplicação em três partes interconectadas. Isto é feito para separar representaçõesdécada de informação internas dos modos como a informação é apresentada para e aceita pelo usuário.1970,<ref>"More deeply, the framework exists to separate the representation of information from user interaction.name=":0">{{citar [httpweb|url=https://www.artimasitepoint.com/articlesthe-mvc-pattern-and-php-1/dci_vision.html |titulo=The DCIMVC Architecture:Pattern A Newand Vision of Object-Oriented Programming] {{WaybackPHP|urldata=http:04/03/www.artima.com2013|acessodata=15/articles10/dci_vision.html2019|publicado=SitePoint Pty.|dateultimo=20170929001352Hopkins|primeiro=Callum|titulotrad=O }}padrão MVC [[Trygvee Reenskaug]]o and [[James Coplien]] – 20 de março de 2009.PHP}}</ref><ref>Burbeck (1992):focado "...no the[[Reutilização userde input,código|reuso thede modelingcódigo]] ofe thea external[[separação world,de andconceitos]] theem visualtrês feedbackcamadas tointerconectadas, theonde usera areapresentação explicitlydos separateddados ande handledinteração by threedos types of object."</ref> Ousuários (''[[padrãoFront-end dee projetoback-end|front-end]]'') MVCsão separaseparados estesdos componentesmétodos maioresque possibilitandointeragem acom o [[reutilizaçãobanco de códigodados]] e(''back-end).''<ref desenvolvimentoname=":0" paralelo de maneira eficiente./>
 
Normalmente usado para o desenvolvimento de [[Interface do usuário|interfaces de usuário]] que divide uma aplicação partes (camadas/componentes) interconectadas. Isto é feito para separar representações de informação internas dos modos como a informação é apresentada para e aceita pelo usuário,<ref>"More deeply, the framework exists to separate the representation of information from user interaction." [http://www.artima.com/articles/dci_vision.html The DCI Architecture: A New Vision of Object-Oriented Programming] {{Wayback|url=http://www.artima.com/articles/dci_vision.html |date=20170929001352 }} – [[Trygve Reenskaug]] and [[James Coplien]] – 20 de março de 2009.</ref><ref>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."</ref> levando ao 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 [[Reutilização de código|reusabilidade de código]] e [[separação de conceitos]].
 
== História ==
Tradicionalmente usado para [[Interface gráfica do usuário|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.<ref>{{citar jornal|url=http://blog.iandavis.com/2008/12/what-are-the-benefits-of-mvc/|título=What Are The Benefits of MVC?|último =Davis|primeiro =Ian|jornal=Internet Alchemy|acessodata=29-11-2016}}</ref> Linguagens de programação populares como [[Java (linguagem de programação)|Java]], [[C#]], [[Ruby]], [[PHP]] e outras possuem frameworks MVC populares que são atualmente usados no desenvolvimentos de aplicações web.
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”. <ref>[http://heim.ifi.uio.no/~trygver/themes/mvc/mvc-index.html Trygve M. H. Reenskaug/MVC]—XEROX PARC 1978-79</ref>
 
== Os componentes do MVC ==
'''Camada de apresentação ou visualização''' (View) - 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 por meio 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.
Tradicionalmente usado para [[Interface gráfica do usuário|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.<ref>{{citar jornal|último=Davis|primeiro=Ian|título=What Are The Benefits of MVC?|url=http://blog.iandavis.com/2008/12/what-are-the-benefits-of-mvc/|título=What Are The Benefits of MVC?|último =Davis|primeiro =Ian|jornal=Internet Alchemy|acessodata=29-11-2016}}</ref> Linguagens de programação populares como [[Java (linguagem de programação)|Java]], [[C#]], [[Ruby]], [[PHP]] e outras possuem frameworks MVC populares que são atualmente usados no desenvolvimentos de aplicações web.
 
=== '''Camada de modelo ou da lógica da aplicação''' (Model) ===
'''Camada de lógica da aplicação''' (Model) - É o coração da execução, responsável por tudo que a aplicação vai fazer a partir dos comandos da camada de controle em um ou mais elementos de dados, respondendo a perguntas sobre o sua condição e a instruções para mudá-las. 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.
Modelo é a ponte entre as camadas Visão (''View'') e Controle (''Controller''),<ref name=":0" /> consiste nos dados da aplicação, regras de negócios, lógica e funções. Permite o acesso para os dados serem coletados, gravados e, exibidos.<ref name=":0" />
 
'''Camada de lógica da aplicação''' (Model) - É o coração da execução, responsável por tudo que a aplicação vai fazer a partir dos comandos da camada de controle em um ou mais elementos de dados, respondendo a perguntas sobre o sua condição e a instruções para mudá-las. 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''' (Control) - É 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 operações necessárias.
 
=== '''Camada de apresentação ou visualização''' (View) ===
== História ==
Visão pode ser qualquer saída de representação dos dados, como uma tabela ou um diagrama. É onde os dados solicitados do Modelo (''Model'') são exibidos.<ref name=":0" /> É 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. A Visão também provoca interações com o usuário, que interage com o Controle (''Controller''). O exemplo básico disso é um botão gerado por uma Visão, no qual um usuário clica e aciona uma ação no Controle.<ref name=":0" />
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”. <ref>[http://heim.ifi.uio.no/~trygver/themes/mvc/mvc-index.html Trygve M. H. Reenskaug/MVC]—XEROX PARC 1978-79</ref>
 
'''Camada de apresentação ou visualização''' (View) - 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 por meio 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 controle ou controlador''' (Controller) ===
Controle é o componente final da tríade, faz a mediação da entrada, convertendo-a em comandos para o modelo ou visão. É onde são manipulados os dados que o usuário insere ou atualiza o Modelo de acordo.<ref name=":0" /> O foco do Controle é a ação do usuário.<ref name=":0" />
 
'''Camada de controle''' (Control) - É 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 operações necessárias.
 
== Interação dos componentes ==
Linha 19 ⟶ 29:
Além de dividir a aplicação em três tipos de componentes, o desenho MVC define as interações entre eles.
 
* UmO '''controladorControlador''' ('''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.
Linha 75 ⟶ 85:
 
=== ActionScript 3 ===
* [[Cairngorm]] -, da Adobe
* [[PureMVC]]
* [[Swiz]]
Linha 85 ⟶ 95:
 
=== .NET ===
* [[ASP.NET#ASP.NET_MVC|ASP.NET MVC]] - oficial, da [[Microsoft]]
* [[C Sharp|C♯]] - oficial, da [[Microsoft]]
* [[Versões Existentes ]]: [[MVC 2, MVC 3, MVC 4]],MVC 5
 
=== Delphi ===
* [[MVCBr]] <ref>[https://github.com/amarildolacerda/MVCBr Git/Fontes MVCBr]</ref><ref>[http://tireideletra.com.br Blog TireiDeLetra]</ref>
 
=== Harmony ===
* [[Harmony Framework]] - Oficial, da [[Vilesoft]]
 
=== Java ===