Pergunta

eu encontrei O que são mvp e mvc e qual a diferença mas realmente não respondeu a essa pergunta.

Recentemente comecei a usar MVC porque faz parte da estrutura que eu e meu parceiro de trabalho usaremos.Escolhemos porque parecia fácil e separava o processo da exibição. Existem vantagens além disso que não conhecemos e que podemos estar perdendo?

Prós

  1. Exibição e processamento são separados


Contras

  1. Nada até agora
Foi útil?

Solução

MVC é a separação de euodelo, vveja e ccontrolador - nada mais, nada menos.É simplesmente um paradigma;um ideal que você deve ter em mente ao planejar aulas.Evite misturar código das três categorias em uma classe.

Por exemplo, enquanto uma grade de tabela visualizar obviamente deve apresentar os dados uma vez mostrados, não deve ter código sobre de onde recuperar os dados, ou qual sua estrutura nativa (o modelo) é como.Da mesma forma, embora possa ter a função de somar uma coluna, a soma real deve acontecer no controlador.

Uma caixa de diálogo 'salvar arquivo' (visualizar) finalmente passa o caminho, uma vez escolhido pelo usuário, para o controlador, que então pergunta ao modelo para os dados e faz a economia real.

Esta separação de responsabilidades permite flexibilidade no futuro.Por exemplo, como a visualização não se importa com o modelo subjacente, é mais fácil suportar vários formatos de arquivo:basta adicionar uma subclasse de modelo para cada um.

Outras dicas

A separação de preocupações é o grande problema.

Ser capaz de separar esses componentes torna o código mais fácil de reutilizar e testar de forma independente.Se você realmente não sabe o que é MVC, tenha cuidado ao tentar entender a opinião das pessoas, pois ainda há alguma controvérsia sobre o que é o "Modelo" (sejam os objetos de negócios/DataSets/DataTables ou se representa o serviço subjacente camada).

Já vi todos os tipos de implementações que se autodenominam MVC, mas não são exatamente e como os comentários em Artigo de Jeff show MVC é um ponto controverso com o qual não acho que os desenvolvedores concordarão totalmente.

Um bom resumo de todos os diferentes tipos de MVC está disponível aqui.

Jeff tem um publicar sobre isso, caso contrário encontrei alguns documentos úteis no site da Apple, nos tutoriais do Cocoa (Este por exemplo).

Acho que outro benefício de usar o padrão MVC é que ele abre as portas para outros abordagens ao design, como MVP/Presenter first e muitos outros padrões MV*.

Sem esta segregação fundamental dos “componentes” do projeto a adoção destas técnicas seria muito mais difícil.

Acho que ajuda a tornar seu código ainda mais baseado em interface.Não apenas dentro do projeto individual, mas você quase pode começar a desenvolver "visualizações" comuns, o que significa que você pode modelar muito mais código "grunhido" usado em seus aplicativos.Por exemplo, uma "visualização de dados" muito abstrata que simplesmente pega um monte de dados e os lança em um layout de grade comum.

Editar:

Se eu me lembro bem, este é um podcast muito bom sobre padrões MV* (ouvi há pouco!)

Uma desvantagem que consigo pensar é se você precisa de acesso realmente rápido aos seus dados em sua visualização (por exemplo, dados de animação de jogos, como posições de ossos). É muito ineficiente manter uma camada de separação neste caso.

Caso contrário, para a maioria dos outros aplicativos que são mais orientados a dados do que a gráficos, parece uma maneira lógica de conduzir uma UI.

Se você seguir os podcasts stackoverflow, poderá ouvir Jeff (e Geoff?) Discutindo sua grandeza. http://blog.stackoverflow.com/2008/08/podcast-17/.Mas lembre-se de que usar essas camadas separadas significa que as coisas serão mais fáceis no futuro – e mais difíceis agora.E camadas pode tornar as coisas mais lentas.E você pode não precisar deles.Mas não deixe que isso o impeça de aprender o que é: ao construir sistemas grandes, robustos e de longa duração, é inestimável.

Ele separa o modelo e a exibição controlada por um controlador, no que diz respeito ao modelo, seus modelos precisam seguir a arquitetura OO, aprimoramentos futuros e outra manutenção da base de código devem ser muito fáceis e a base de código deve ser reutilizável.

O mesmo modelo pode ter qualquer número de visualizações, por exemplo) as mesmas informações podem ser mostradas em visualizações gráficas diferentes.A mesma visualização pode ter diferentes números de modelos, por exemplo) diferentes detalhes podem ser mostrados como um único gráfico, digamos, como um gráfico de barras.Isso é a reutilização da Visualização e do Modelo.

Melhorias nas visualizações e outros suportes de novas tecnologias para a construção da visualização podem ser implementadas facilmente.

O cara que está trabalhando no view não precisa saber sobre a base de código do modelo subjacente e sua arquitetura, e vice-versa para o modelo.

MVC é apenas um padrão de design geral que, no contexto do desenvolvimento enxuto de aplicativos da web, torna mais fácil para o desenvolvedor manter a marcação HTML na camada de apresentação de um aplicativo (a visualização) separada dos métodos que recebem e tratam as solicitações do cliente (o controladores) e as representações de dados que são retornadas na visualização (os modelos).É tudo uma questão de separação de interesses, ou seja, manter o código que serve a um propósito funcional (por exemplo,lidar com solicitações de clientes) sequestrado de código que serve a uma finalidade funcional totalmente diferente (por exemplo,representando dados).

É o mesmo princípio que explica por que qualquer pessoa que gastou mais de 5 minutos tentando construir um site pode apreciar a necessidade de manter sua marcação HTML, JavaScript e CSS em arquivos separados:Se você simplesmente despejar todo o seu código em um único arquivo, você acabará com um espaguete que será virtualmente não editável mais tarde.

Já que você pediu possíveis "contras": Não sou autoridade em design de arquitetura de software, mas com base em minha experiência de desenvolvimento em MVC, acho que também é importante ressaltar que seguir um padrão de design MVC estrito e simples é mais útil para 1) aplicativos web leves ou 2 ) como a camada de UI de um aplicativo empresarial maior.Estou surpreso que essa especificação não seja mais comentada, porque o MVC não contém definições explícitas para sua lógica de negócios, modelos de domínio ou qualquer coisa na camada de acesso a dados do seu aplicativo.Quando comecei a desenvolver em ASP.NET MVC (ou seja,antes de saber que existiam outras arquiteturas de software), eu acabaria com controladores muito inchados ou até mesmo visualizaria modelos repletos de lógica de negócios que, se eu estivesse trabalhando em aplicativos corporativos, teria tornado difícil para outros desenvolvedores que não estavam familiarizados com meu código para modificar (ou seja,mais espaguete).

Uma das principais vantagens do MVC que não foi mencionada aqui é que o MVC fornece URLs RESTful que permitem SEO.Quando você nomeia seus controladores e ações com sabedoria, fica mais fácil para os mecanismos de pesquisa encontrarem seu site se apenas derem uma olhada nos URLs do seu site.Por exemplo, você tem um site de venda de carros e uma página que exibe os carros Lamborghini Veneno disponíveis, em vez de ter www.MyCarSale.com/product/6548 referindo-se à página que você pode escolher www.MyCarSale.com/SportCar/Lamborghini-Veneno url para fins de SEO.

Aqui é uma boa resposta às vantagens do MVC e aqui é um artigo Como criar um URL amigável para SEO.

A principal vantagem da arquitetura MVC é diferenciar as camadas de um projeto em Modelo, Visualização e Controlador para a Reutilização do código, fácil manutenção e manutenção do código.A melhor coisa é que o desenvolvedor se sente bem em adicionar algum código entre a manutenção do projeto.

Aqui você pode ver mais alguns pontos sobre Principais vantagens da arquitetura MVC.

![arquitetura mvc][1]

Model-view-controller (MVC) é um padrão de arquitetura de software para implementação de interfaces de usuário.Ele divide um determinado aplicativo de software em três partes interconectadas, de modo a separar as representações internas da informação das formas como a informação é apresentada ou aceita pelo usuário.

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