Diferença entre MVVM e MVP Diferença entre

Anonim

O objetivo do desenvolvimento de software é criar soluções que atendam necessidades e problemas para usuários e empresas. Para alcançar isso, são utilizadas diferentes tecnologias e padrões de arquitetura, como Model-View-ViewModel (MVVM) e Model-View-Presenter (MVP) .

Tal como acontece com qualquer coisa que é fabricada, o primeiro passo é a fase de planejamento e design. O processo de design do software pode ser uma especificação baseada no conjunto de ferramentas de tecnologia preferencial, e pode abranger toda a atividade desde a concepção até o planejamento para a implementação para atualizações e modificações.

Abrange o design arquitetônico de baixo e alto nível, com base em padrões de arquitetura selecionados, e mapeia soluções reutilizáveis ​​usando padrões de design.

Estrutura de Aplicação de Software

A arquitetura de software define a estrutura de um aplicativo que atende aos requisitos técnicos, operacionais e de usuários e refere-se a como o código é organizado e gerenciado.

Decidir na arquitetura de um aplicativo de software é crítico, pois não é uma parte fácil e mutável de um aplicativo que já está desenvolvido; portanto, o padrão arquitetônico deve ser decidido antes que qualquer programação comece.

Os padrões arquitetônicos são um pouco diferentes dos padrões de design, pois seu escopo é muito mais abrangente, abordando questões mais técnicas, como desempenho e limitações de hardware, e alta disponibilidade. Exemplos de padrões de arquitetura diferentes são MVC, MVVM e MVP.

Por outro lado, os padrões de design são as melhores práticas formalizadas que facilitam o desenvolvimento reutilizável orientado a objetos e são mais fáceis de manter e mudar do que a arquitetura de um aplicativo.

Padrões de arquitetura

Modelo View Controller (MVC) foi um dos primeiros padrões arquitetônicos desenvolvidos para aplicações web, ganhando popularidade de meados para finais dos anos noventa, particularmente com a comunidade Java.

As estruturas mais recentes, como o Django para Python e Rails (Ruby on Rails), têm um foco forte na implantação rápida, e é por isso que a MVC está ocupando o mercado como a grande atração em padrões arquitetônicos.

Tradicionalmente, o desenvolvimento da interface do usuário continha muitos códigos para lidar com lógica complicada, então os padrões de arquitetura foram projetados para reduzir o código no nível da interface do usuário (UI), tornando-o mais "limpo" e gerenciável.

Assim, com o padrão MVC, uma aplicação web é composta de

  • Modelo (dados)
  • Vista (interface para visualizar e manipular dados)
  • Controlador (operações e as ações realizadas nos dados)

O Modelo lida com lógica de dados e negócios e existem não dependências entre Modelo e Controlador < ou Ver . A

Vista apresenta os dados ao usuário no formato suportado e no layout necessário, e quando o Controlador recebe solicitações de usuários (para buscar dados), ele chama os recursos relevantes necessários para completar o pedido. Vamos aplicar esse padrão para a construção de uma livraria online.

Os usuários podem pesquisar, visualizar, registrar e comprar livros, além de gerenciar seus perfis e listas de livros. Quando um usuário clica na categoria SCI-FI, todos os livros relacionados devem ser exibidos como disponíveis.

Os

Controladores manipulam as ações que gerenciam os livros (lista, adicionar, visualizar, etc.). Pode haver múltiplos Controladores com um controlador principal 'direcionar o tráfego'. Para este exemplo, o

Controlador é nomeado controller_books. php e Modelo (por exemplo, modelo_books. php) manipula os dados e a lógica relacionados aos livros. Por fim, serão necessárias diferentes

Exibições, como ao adicionar livros ao carrinho on-line ou ao visualizar os detalhes do livro com imagens e comentários. Os

controll_books. php recebe a ação (solicitação do usuário) do controlador principal (por exemplo, índice. php ). Os controll_books. php analisa o pedido e chama os models_books. php (os dados) para retornar a lista de livros SCI-FI. A responsabilidade do

Modelo é fornecer essa informação, usando qualquer lógica que foi aplicada (usando filtros de pesquisa). O Controlador , em seguida, leva as informações e passa para o Vista (visualização de pesquisa, visualização de impressão, visualização de detalhes, etc.) e as informações são apresentadas (através da Vista >) para o usuário que iniciou o pedido. Estes são os fundamentos do padrão MVC, que evoluiu nas variações de geração de padrões de arquitetura, como Model-View-Presenter (MVP), Model-View-ViewModel (MVVM), Hierarchical-Model-View-Controller (HMVC) e Model-View-Adapter (MVA), etc. Padrão MVP

Model-View-Presenter (MVP)

O padrão

MVP

existe há um tempo e é uma variante do MVC. Foi projetado especificamente para automação de teste, onde o objetivo era aumentar a quantidade de código que pode ser testado através da automação, e o padrão aborda alguns problemas com a camada de apresentação, isolando a lógica de negócios da UI. A tela é a Visualização, os dados que ela exibe é o Modelo, eo apresentador engata os dois juntos. MVP

compreende os seguintes componentes com responsabilidades separadas:

Modelo (define os dados a serem exibidos)

  • Exibir (exibe os dados do modelo e encaminha as solicitações dos usuários para o Apresentador).
  • Apresentador (interage entre a Vista e o Modelo e os agrupa)
  • A Visualização

(uma página da Web) exibe e gerencia os controles da página encaminhando eventos (solicitações do usuário) para o Apresentador que foram iniciados na Vista . O Presenter

responde a esses eventos lendo e atualizando o Modelo para alterar a Vista e, portanto, a responsabilidade Apresentador é para vincular o Modelo e Exibir . Depois de analisar os padrões MVC

e MVP , a uniformidade é ambas as responsabilidades separadas para cada componente e promovem a separação entre Vista (UI) e Modelo (dados). Diferenças significativas entre esses padrões são mais evidentes na forma como os padrões são implementados. MVP pode ser um padrão complexo para implementar para soluções avançadas, mas certamente tem grandes benefícios se implementado como uma solução bem projetada, embora não seja necessariamente a escolha apropriada para soluções simples.

Padrão MVVM Model-View-ViewModel (MVVM)

O padrão

MVVM

padrão foi projetado especificamente para plataformas Windows Presentation Foundation (WPF) e Microsoft Silverlight, e pode ser usado em todas as plataformas XAML [i] . O WPF é um sistema Microsoft que processa interfaces de usuário em programas baseados no Windows e foi lançado pela primeira vez em.NET Framework 3. 0. MVVM

foi refinado de

MVC e nesse padrão, o View está ativo com comportamentos, eventos e vinculação de dados, e o View sincroniza com o ViewModel (que permite a separação da apresentação e expõe métodos e comandos para gerenciar e manipular o Modelo . MVVM compreende três componentes principais:

Modelo (representa os dados com validação e lógica de negócios)

  • Exibir > (A vista é responsável por definir a estrutura, layout e aparência do que o usuário vê na tela. Idealmente, a visão é definida puramente com o XAML, com um código limitado por trás que não contém lógica de negócios. Dados bidirecionais - encadernação entre o View
  • e ViewModel para exibir as visualizações que sincronizam o Modelo e o ViewModel com a Vista) ViewModel (separa a Vista de e Model, e expõe métodos e comandos para manipular os dados (Modelo). A vista
  • recebe dados do

ViewModel (através de ligação de dados e métodos) e, em tempo de execução, o View mudará ao responder a eventos em o ViewModel . O ViewModel medeia entre

View e Modelo e lida com a lógica View . Ele interage com o Modelo - levando os dados do Modelo e apresentando-o ao Exibir para exibir. Esses componentes estão todos desacoplados um do outro, permitindo uma maior flexibilidade para trabalhar independentemente, isolar o teste da unidade e trocá-los, sem afetar nenhum outro componente. Esta estrutura permite que o Modelo

e outros componentes evoluam de forma independente, permitindo que os desenvolvedores trabalhem simultaneamente em diferentes aspectos da solução. Por exemplo, onde os designers estão trabalhando no

View , eles simplesmente geram amostras de dados sem precisar acessar os outros componentes. Isso facilita o redesenho fácil da interface do usuário quando o View é implementado no XAML. Como mencionado anteriormente com MVP , soluções simples não precisariam de padrões de arquitetura e design, como "Hello World!"É muito básico para seguir qualquer padrão; no entanto, à medida que mais recursos, funções e componentes são introduzidos, a complexidade do aplicativo aumenta, assim como a quantidade de código que precisa ser gerenciado.

No resumo Desde o início do desenvolvimento da interface do usuário, os padrões de design estão se tornando cada vez mais populares para facilitar o processo de desenvolvimento, as aplicações mais escaláveis ​​e facilita testes mais fáceis. Diferença ilustrada entre os padrões MVP e MVVM:

Em

MVP

e

  • MVVM , a Vista é o ponto de entrada para o aplicativo > Em MVP , há um mapeamento um-para-um entre o View
  • e Presenter , onde em MVVM , o relacionamento é um -para-muitos entre o Exibir e ViewModel . MVP é usado principalmente para aplicativos Windows Forms e Windows Phone e MVVM foi projetado para Silverlight, WPF, Knockout / AngularJS, etc.