MVC, MVP e MVVM: Uma Comparação de Padrões Arquiteturais APPI 306 Alexandre Ricardo Nardi Jorge Tressino Rua Consultores Microsoft Brasil O que Veremos e o que Não Veremos Veremos: Uma investigação de como diferentes padrões de arquitetura de software se relacionam com diferentes tecnologias de desenvolvimento da Microsoft Uma discussão de “onde usar o quê” Não Veremos: Uma discussão exaustiva sobre padrões de arquitetura de software Visão Geral O que, por que e como sobre os padrões arquiteturais Model View Controller (MVC) Model View Presenter (MVP) Model View ViewModel (MVVM) Exemplos MVC: ASP.Net MVC 3 MVP: SharePoint MVVM: WPF O que usar onde? O que é Model View (C ou P ou VM)? Padrões que descrevem uma abordagem para desenvolvimento de software Os módulos incluem Model – Dados e comportamento View – Camada de apresentação C ou VM ou P – Lógica para “grudar as coisas” Esses padrões se baseiam em “Separação de Responsabilidades” Como em muitos outros tipos de frameworks de sistemas Por que Model View (C ou P ou VM)? Os padrões possuem objetivos semelhantes. Contudo, o fazem de modos diferentes Os objetivos dos padrões são aumentar: Modularidade Flexibilidade Testabilidade Mantenibilidade Model View Controller (MVC) Descrito inicialmente em 1979 para SmalTalk para Xerox PARC O controller é a peça central que desacopla o Model e o View Fluxo de controle: Evento de interação do usuário Controller manipula o evento e o converte para uma ação do usuário que o Model possa entender Model gerencia o comportamento e dados do domínio da aplicação O View interage com o Controller e o Model para gerar a interface com o usuário Client/Server (DNA) vs MVC Client Controller ----------------------Objetos de Negócio Server ----------------------Dados dos Objetos de Negócio View Model Padrão MVC Observer Controller View Model ASP.Net MVC 3 Model View Presenter (MVP) MVP originou-se no início dos anos 1990 MVP é derivado do MVC Dois tipos de implementação Passive View Supervising Controller Presenter assume a funcionalidade do MVC Controller View é responsável por manipular os eventos da IU Model torna-se estritamente um Modelo de Domínio (Domain Model) Mais voltado a Interface com Usuário (IU) MVC vs MVP (Passive View) Presenter Controller View Model View Model MVP (Supervising Controller) Presenter View Model MVP Usando SharePoint Model View ViewModel (MVVM) Especialização do MVP, conhecida como Modelo de Apresentação (Presentation Model) Construído especificamente para os ambientes WPF e Silverlight Model e View funcionam como no MVC ViewModel é um “Model da View” Ele estende o Model com comportamentos (behaviors) que o View possa usar Associação de dados (data binding) entre View e Model Passa comandos entre View e Model MVP (Passive View) vs MVVM Presenter View Model ViewModel View Model MVVM Usando WPF O que usar onde? Model View Controller (MVC) ASP.Net MVC 3 Aplicações web desconectadas Model View Presenter (MVP) Web Forms/SharePoint, Windows Forms Lógica de estado da IU Model View ViewModel (MVVM) Silverlight, WPF Associação de dados (data binding) bidirecional Get the free mobile app for your phone http:/ / gettag.mobi http://technet.microsoft.com/pt-br Get the free mobile app for your phone http:/ / gettag.mobi http://msdn.microsoft.com/pt-br Não esqueça de preencher sua avaliação online www.teched.com.br/avaliacao Get the free mobile app for your phone http:/ / gettag.mobi © 2011 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.