Pergunta

Eu não posso Grokar que MVC é, o mindset ou modelo de programação que eu deveria adquirir tão MVC material pode instantaneamente "lâmpada" na minha cabeça? Se não instantaneamente, o que simples programas / projectos que eu deveria tentar fazer primeiro para que eu possa aplicar as coisas puras MVC traz à programação.

OOP é intuitiva e mais fácil, objeto está ao nosso redor, e os benefícios da reutilização de código usando OOP-paradigma instantaneamente clique para ninguém. Provavelmente, você pode conversar com ninguém sobre OOP em poucos minutos e palestra alguns exemplos e que iria buscá-la. Enquanto OOP alguma forma elevar o aspecto intuitiveness de programação, MVC parece fazer o oposto. Estou ficando pensamentos negativos que alguns futuros empregadores (ou até mesmo clientes) iria olhar para baixo em cima de mim para não usar a tecnologia MVC.

Embora eu provavelmente obter o href="http://www.codinghorror.com/blog/archives/001112.html" rel="nofollow noreferrer"> skinnable aspecto de MVC, mas quando eu tentar aplicá-lo para o meu próprio projeto, eu não sei por onde começar.

E também alguns programadores ainda têm pontos de vista sobre como realizar MVC corretamente divergentes.

Tome este por exemplo, de pós de Jeff sobre MVC:

A vista é simplesmente como você colocar o dados para fora, como ele é exibido. Se vocês quer um subconjunto de alguns dados, para exemplo, a minha opinião é que é um responsabilidade do modelo.

Assim, talvez alguns programadores usar MVC, mas que de alguma forma inadvertidamente usar o Vista ou o controlador para extrair um subconjunto de dados.

Por que não podemos ter uma definição definitiva do que e como realizar MVC corretamente?

E também, quando eu procurar programas MVC NET, a maior parte dele se aplica aos programas da web, aplicativos de desktop não, esta intriga-me ainda mais. Meu palpite é que esta é mais vantajosa para aplicações web, não há muito problema sobre a visão entremeada (html) eo controlador (código do programa) em aplicativos de desktop.

Foi útil?

Solução

Gosto da maneira como Martin Fowler coloca:)

http://martinfowler.com/eaaCatalog/modelViewController.html

.. e de http://martinfowler.com/eaaDev/uiArchs.html :

Tome MVC como um exemplo. É muitas vezes referido como um padrão, mas eu não encontrá-lo extremamente útil para pensar sobre isso como um padrão, pois contém algumas ideias diferentes. Diferentes pessoas lendo sobre MVC em lugares diferentes ter idéias diferentes a partir dele e descrever estes como 'MVC'. Se isso não causa confusão suficiente, você, em seguida, obter o efeito de mal-entendidos de MVC que se desenvolvem através de um sistema de sussurros chineses.

Outras dicas

Você pode começar lendo as respostas às esta questão .

MVC faz WebApps encaixar muito bem. A maioria dos WebApps obter os dados do DB, processá-lo um pouco e mostrar-lhes para o usuário. DB é o seu nível modelo, controlador de não processar e visualizar apenas emite código HTML.

Algumas pessoas pensam controladores deve apenas obter os dados do modelo e alimentá-lo para a vista, mas eu acho que isso significa que o controladores são inúteis e, portanto, é apenas modelo de programação MV :) Mas eu os entendo, se você usar algum tipo de processamento, você vai usá-lo mais de uma vez e, portanto, é melhor fazer isso no nível do modelo, ele pode ser compartilhado entre as diferentes partes de aplicações desta forma.

Você não tem que usar MVC para aplicativos de desktop, na verdade, eu não estou certo de que este modelo irá trabalhar para grandes aplicações, que desktops aqueles geralmente são. Demasiadas vezes você quiser usar um "componente", coisa que você pode alimentar os mesmos dados e obter o mesmo UI de fora, mas em diferentes partes do aplicativo, e isso só leva a copiar o código ao redor com MVC.

Eu encontrei o paradigma MVC muitas vezes um monte muito inchado. Um modelo / visão simples (sem o controlador) é mais fácil de entender e fácil de implementar.

A maioria das pessoas entender que alguma classe contém os dados (modelo) e a lógica para carregar / salvar os dados e outra mostra de classe que os dados (vista). Dê-lhe um pouco de cola para carregar um documento (algo como um gerenciador de documentos) e está feito.

Uma implementação "típico" MVC teria:

  • vistas - torna os dados para o usuário final para ver e dá-lhes interface de usuário objetos para interagir com os dados (mas não para lidar com essa interação)
  • controller (s) - lida com a interação do usuário e manipulação de dados que viajam entre os pontos de vista e do modelo
  • modelo - alças de armazenamento de dados e a representação de que os dados para a aplicação

Um uso frequente do padrão MVC seria o HTML / CSS / renderização para a parte de vista de uma aplicação web, o nível de aplicação de linguagem PHP / scripting agindo como o controlador de navegador e MySQL ou um banco de dados semelhante agindo como o modelo (que pode ou não ter algum tipo de quadro ORM na frente dele).

A verdade é que muito poucas pessoas usam MVC exatamente este formato, e por boas razões (em minha opinião). Diferentes aplicações têm diferentes necessidades e exigências do projeto e é benéfico para dobrar os padrões para o que é necessário. Estes dias, "MVC" parece descrever mais o uso de uma estrutura que isola as camadas de uma aplicação do que o padrão específico MVC.

De uma perspectiva empregador, o que realmente está sendo procurado (muitas vezes) é que a camada de abstração ea experiência que vem construindo uma aplicação n-camadas. Há um salto mental, bastante considerável que acontece quando você se move de trabalhar em um aplicativo que pode ser dividido não só em recursos verticais, mas em camadas horizontais de recursos também.

Como uma nota, esfola é realmente apenas um aspecto de uma camada específica, você pode alterar as fontes de dados na camada de modelo, os métodos de manipulação que os dados (um novo algoritmo, por exemplo) na camada de controlador and roll-los para fora gradualmente, sem ter que mudar as outras camadas.

Talvez seguindo o Wikipedia artigo pode encaminhá-lo para mais implementações. Tem links para implementações de MVC como estruturas de GUI .

MVC é um padrão, e ele funciona bem com OOP, os dois não são exclusivos - Eu diria que eles eram ortogonais. As tentativas de padrão MVC para separar o código de exibição (V) a partir dos dados (M) e o fluxo de controlo (C).

Se você procurar por "MVC Net" você quase certamente ter um monte de hits para aplicações web porque a estrutura ASP.Net MVC foi lançado recentemente, e esta é uma aplicação do padrão MVC à programação ASP.Net, portanto, ele é usado para o desenvolvimento de websites. Como você sugere que não há razão para não aplicar o padrão para aplicativos de Desktop também.

Se você está tendo um tempo duro com MVC Eu recomendo a leitura até padrões em geral para ter uma idéia de como as pessoas falam sobre a modelagem de problemas / soluções usando padrões, em seguida olhar para MVC em mais detalhes.

Editar Alertado pela referência ao Fowler, seu livro Padrões de Enterprise Application Architectur e é um excelente lugar para ler sobre MVC e outros padrões.

O MVC paradigma é uma maneira de quebrar uma aplicação em três partes: o modelo, a vista eo Controller. MVC foi originalmente desenvolvido para mapear a entrada tradicional, processamento, funções de saída para GUI reino.

A entrada do usuário, a modelagem do mundo externo, e o feedback visual para o usuário são separados e tratados pelo modelo, da janela de visualização e controlador objetos. O mouse interpreta controlador e entradas de teclado do usuário e mapeia essas ações do usuário em comandos que são enviados para o modelo e / ou porta de visualização para efeito a alteração apropriada. O modelo gerencia um ou mais elementos de dados, responde a consultas sobre seu estado, e responde a instruções para mudança de estado. A janela de visualização administra uma área retangular da tela e é responsável por apresentar dados para o usuário através de uma combinação de gráficos e texto ... leia mais e até mesmo mais .

Na sua essência, MVC é apenas um caso específico da separação de preocupações: Um pedaço de código é responsável por armazenar os dados, um segundo módulo é responsável pela manipulação dos dados, e um terceiro cuida de interagir com o utilizador.

Qualquer destes pedaços pode ser implementado de uma maneira OO, ou não - MVC e OOP são ortogonais. (Embora, na minha experiência, aplicações e frameworks MVC são extremamente provável que seja OO).

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top