O MVC aplica-se apenas à web

14

É quase instantâneo sempre que falo com os desenvolvedores sobre o Model View Controller ( MVC ) eles dizem que você faz uma requisição para uma url que o servidor constrói uma entidade (MODEL) e fornece uma representação visual desse modelo.

  • Então isso significa que MVC é apenas para a web ou eu conheci pessoas que são apenas desenvolvedores que empregam MVC para escrever aplicativos da web?

  • Existem usos para o MVC em aplicativos estilo desktop?

  • Eu sou um novo paradigma e gostaria de saber de qualquer super-conjunto para MVC

por Deeptechtons 21.03.2012 / 09:53
fonte

8 respostas

22

MVC é um padrão. Padrões se aplicam em toda a programação. O MVC funciona muito bem em um contexto da Web.

Como o mosquito aponta , dê uma olhada a tag mvc e você verá vários exemplos dela sendo implementados.

    
por 21.03.2012 / 10:09
fonte
45

Considerando que o MVC é de 1977, e a web foi inventada somente em 1991, deve ser bastante óbvio que o MVC não é somente para a web.

    
por 21.03.2012 / 10:13
fonte
9

Não, o desenvolvimento para OS X e iOS usa o padrão Model View Controller.

    
por 21.03.2012 / 10:04
fonte
8

Faça a pergunta em um ambiente Microsoft e muitas pessoas vão assumir que você quer dizer Asp.Net MVC, que é uma implementação MVC especificamente para a web.

Infelizmente, há muitas pessoas que não percebem que esta é uma implementação do padrão MVC e pensam que são termos intercambiáveis, o que leva a uma suposição de "apenas web".

    
por 21.03.2012 / 11:30
fonte
2

Pelo menos até onde eu sei, a primeira implementação do MVC foi em Smalltalk. Definitivamente estava presente em Smalltalk-80. Embora eu não tenha nenhuma documentação à mão para provar isso, eu acredito que (ou algo muito similar de qualquer maneira) esteve em Smalltalk por alguns anos até então.

A maioria das estruturas da OO GUI incluiu pelo menos alguma variante do MVC. Não tenho certeza, no entanto, exatamente o que "superset" significaria neste caso. É um pouco difícil dizer se uma determinada variante é um superconjunto, um subconjunto ou um par de MVC, mas eu consideraria a maioria deles colegas.

Em qualquer caso, muitos (a maioria deles) foram usados para desenvolvimento de desktop, não para desenvolvimento web. Graças a algumas antigas patentes de AT & T, a maioria dos sistemas de janelas exige que os programas gerem visualizações sob demanda. Isso (quase) força pelo menos um certo grau de separação entre o código que mantém o estado atual (o modelo) e o código que exibe esse estado (a visão). Isso ainda deixa muito espaço para a variação em 1) o grau em que a funcionalidade do controlador é isolada, e 2) os detalhes exatos de onde desenhar as linhas entre cada uma das peças principais.

    
por 21.03.2012 / 20:26
fonte
1

Não, aplica-se mesmo a aplicações independentes. Exemplo O Java Swing segue o MVC.

    
por 21.03.2012 / 15:17
fonte
1

Portanto, há vários padrões de design diferentes nessa área.

  • Model View Presenter (mvp)
  • Apresentador de exibição de exibição de modelo (mvvp)
  • Model View Controller
  • Modelo 2

e assim por diante. Ao longo dos anos, eles foram entrelaçados, misturados, modificados e aplicados em uma ampla variedade de contextos. A parte importante aqui é que o padrão de design MVC de 1977 mudou bastante e não é mais o padrão de design usado pelos frameworks de servidores. Como um exemplo na implementação smalltalk original, o Model observaria a exibição de mudanças, o que não é mais o caso, pois o servidor simplesmente não pode observar elementos html no navegador do usuário. Em vez disso, se a exibição mudar, a exibição enviará uma solicitação ao controlador, que atualizará a exibição. Novamente, a implementação original do MVC não é seguida, já que uma atualização no modelo implicaria que todas as visualizações dependentes do modelo seriam atualizadas.

Os modernos frameworks web seguem uma arquitetura simples de três camadas, também conhecida como arquitetura Model 2.

Existem, é claro, exemplos de arquiteturas MVC reais na Web, mas geralmente são apenas do cliente, conectadas a um servidor que segue a arquitetura do Model 2, já que as visualizações são xml e json e não são observadas para alterações. Exemplos de arquiteturas mvc puras do lado do cliente são Sencha Touch e Sproutcore.

Se você tem MVC no navegador, mvc como no servidor e mvc como a camada de dados, você tem uma implementação mvc hierárquica.

Nota. Eu só falei sobre frameworks web, outras implementações do MVC como o java swing e o Flex tem outras diferenças de implementação.

    
por 22.03.2012 / 12:20
fonte
1

Uma coisa que você deve saber é que existem tantos tipos de MVC quanto estruturas que reivindicam implementar o MVC.

A maioria concorda com o fato de que o Modelo mantém algum estado e o Modo de Exibição o processa. Mas o controlador tem papéis muito diferentes.

Em Smalltalk, onde foi descrito pela primeira vez, o Modelo é o núcleo de seus métodos de aplicativo, dados e negócios. A Visualização é uma representação gráfica do estado do aplicativo (também conhecido como Modelo) e o Controlador gerencia os eventos de entrada, mouse e teclado do usuário. O Controlador, por exemplo, roteia os eventos do teclado para o elemento de visualização que tem o foco.

Em páginas .jsp, o Modelo é basicamente de dados, a Visualização processa esse Modelo para HTML e o Controlador faz o roteamento do Modelo para a Visualização adequada para renderizá-lo.

Então, para responder à sua pergunta, enquanto o MVC é usado tanto em aplicativos independentes (Java, .Net, Flex) quanto na web (páginas jsp), é uma coisa muito diferente. Isso significa que o MVC que você conhece não é usado em aplicativos independentes.

    
por 08.11.2014 / 18:35
fonte