SlideShare ist ein Scribd-Unternehmen logo
1 von 21
MVC MVP MVVM


   André Faria Gomes
      @andrefaria
MVC
                                               1979 (Smalltalk)


                Model-View-Controller



Melhor arquitetura através de separation of concerns

Isola os dados (model) das interfaces de usuário (views)

     Controlers tratam da entrada de usuário e
         coordenação das views e models
4
                                           VC ipt
                                         M r
                                          vaSc
                                        Ja
                Backbone, Ember.js and JavaScriptMVC
Ajuda a resolver o problema do Js spaghetti estruturando o código
Gerenciar os dados de negócio


Não diz respeito a UI, porém
quando um modelo muda,
geralmente vai notificar
observadores para que as
mudanças também ocorram na
apresentação. Podendo ter vários
observadores por modelo.




                                   Models
Representações visuais dos modelos em seu estado atual

A tarefa de atualizar o modelo (geralmente) é do controller
Usuários interagem com a view, lendo, editando, etc.




Views
Templates
Muitos frameworks usam templates porque é uma má prática (de codificação de
e performance) criar longos blocos de strings concatenadas.

 A aplicação recebe dados em Json e aplica no Template
Intermediários entre models e views

Atualiza a views quando o model muda

Atualiza o model quando o usuário altera a view

Nem sempre explícito, no
backbone a responsabilidade
é divida pelos Routes e
View, outros frameworks
como o Spine já tem o
Controller explícito.




                         Controllers
Separation of Concerns facilita manutenção

Desacoplar model e view facilita a escrita de testes

Permite reutilizar lógica em diferentes locais da aplicação




                               Benefícios
1990 (Smalltalk)


                      MVP
                     Model-View-Presenter



O Presenter é um componente que contém a regra de negócio
relacionada a user-interface, invocações da view são delegadas
para o presenter.

O presenter fala com a view e com o model, porém esses são
isoldados entre si. Eles fazem o bind eles a view e o controller. As
views expõe seeters para que o presenter possam alterar seus
dados.

Útil quando é preciso reutilizar regras de apresentação. Muito
usado em grandes aplicações corporativas.
http://geekswithblogs.net/dlussier/archive/2009/11/21/136454.aspx
MVVM
                                                    2005
                                                Microsoft

            Model View ViewModel



Baseado em MVC e MVP procura separar de
    forma mais clara a regra de negócio da
   interface de usuário das outras regras e
comportamentos da aplicação através data-
            bindings declarativos.

Isso facilita que UI e desenvolvimento possam
 ocorrer simultaneamente na mesma base de
   código. Desenvolvedores de UI escrevem
bindings no HTML, enquanto desenvolvedores
                 cuidam do resto.
Dados apenas, nada de Comportamento (Tipicamente)
Não formatam informação nem fazem aparecer dados na UI, isso é
gerenciado pelo ViewModel




                                     Models
Interação com o usuário

Não é responsável por gerenciar o estado
Representam o estado do ViewModel

Geralmente é apenas um HTML com bindings declarativos




                                           Views
Um tipo de controller especializado que converte dados.

Transforma o model e view e passa comandos do views para o model.

Representa os dados da Views para o Model.

Testável

Pode ser exagero para UI’s muito simples




                         Viewmodel
“I must admit that when I first reviewed implementations
of MVVM (e.g KnockoutJS, Knockback), I was surprised
that any developer would want to return to the days of old
where we mixed logic (JavaScript) with our markup and
found it quickly unmaintainable.”
                             Addy Osmani
http://codebrief.com/2012/01/the-top-10-javascript-mvc-frameworks-reviewed/
refs



http://addyosmani.com/blog
@andrefaria
http://blog.andrefaria.com

Weitere ähnliche Inhalte

Was ist angesagt?

Estudo da aplicação da arquitetura orientada a serviços em um sistema de gest...
Estudo da aplicação da arquitetura orientada a serviços em um sistema de gest...Estudo da aplicação da arquitetura orientada a serviços em um sistema de gest...
Estudo da aplicação da arquitetura orientada a serviços em um sistema de gest...
Glauco Vinicius Argentino de Oliveira
 
Desenvolvimento RIA com Silverlight 4
Desenvolvimento RIA com Silverlight 4Desenvolvimento RIA com Silverlight 4
Desenvolvimento RIA com Silverlight 4
Rodrigo Kono
 

Was ist angesagt? (20)

Asp net mvc
Asp net mvcAsp net mvc
Asp net mvc
 
Comtec2010 asp.net mvc
Comtec2010 asp.net mvcComtec2010 asp.net mvc
Comtec2010 asp.net mvc
 
Apresentação Facelets_UNIFEI
Apresentação Facelets_UNIFEIApresentação Facelets_UNIFEI
Apresentação Facelets_UNIFEI
 
Usando MVC para agilizar o desenvolvimento
Usando MVC para agilizar o desenvolvimentoUsando MVC para agilizar o desenvolvimento
Usando MVC para agilizar o desenvolvimento
 
Camadas
CamadasCamadas
Camadas
 
Arquitetura de Sofware
Arquitetura de SofwareArquitetura de Sofware
Arquitetura de Sofware
 
Mvc - Semifinal
Mvc - SemifinalMvc - Semifinal
Mvc - Semifinal
 
Entendendo a Tríade Model-View-Controller (MVC) utilizando padrões de projeto...
Entendendo a Tríade Model-View-Controller (MVC) utilizando padrões de projeto...Entendendo a Tríade Model-View-Controller (MVC) utilizando padrões de projeto...
Entendendo a Tríade Model-View-Controller (MVC) utilizando padrões de projeto...
 
Estudo da aplicação da arquitetura orientada a serviços em um sistema de gest...
Estudo da aplicação da arquitetura orientada a serviços em um sistema de gest...Estudo da aplicação da arquitetura orientada a serviços em um sistema de gest...
Estudo da aplicação da arquitetura orientada a serviços em um sistema de gest...
 
Angular js
Angular jsAngular js
Angular js
 
Entendendo a Tríade Model-View-Controller (MVC) Utilizando Padrões de Projeto...
Entendendo a Tríade Model-View-Controller (MVC) Utilizando Padrões de Projeto...Entendendo a Tríade Model-View-Controller (MVC) Utilizando Padrões de Projeto...
Entendendo a Tríade Model-View-Controller (MVC) Utilizando Padrões de Projeto...
 
Jheat
JheatJheat
Jheat
 
Padrões de Projeto Web e o MVC
Padrões de Projeto Web e o MVCPadrões de Projeto Web e o MVC
Padrões de Projeto Web e o MVC
 
Desenvolvimento RIA com Silverlight 4
Desenvolvimento RIA com Silverlight 4Desenvolvimento RIA com Silverlight 4
Desenvolvimento RIA com Silverlight 4
 
Como trabalhar com angular js
Como trabalhar com angular jsComo trabalhar com angular js
Como trabalhar com angular js
 
ASP.NET MVC para desenvolvedores Web Forms (TechEd)
ASP.NET MVC para desenvolvedores Web Forms (TechEd)ASP.NET MVC para desenvolvedores Web Forms (TechEd)
ASP.NET MVC para desenvolvedores Web Forms (TechEd)
 
Apresentação angular js
Apresentação angular jsApresentação angular js
Apresentação angular js
 
Estudo de caso ASP.NET MVC e Silverlight
Estudo de caso ASP.NET MVC e SilverlightEstudo de caso ASP.NET MVC e Silverlight
Estudo de caso ASP.NET MVC e Silverlight
 
MVC Pattern
MVC PatternMVC Pattern
MVC Pattern
 
Introdução a arquitetura de sistemas com .NET
Introdução a arquitetura de sistemas com .NETIntrodução a arquitetura de sistemas com .NET
Introdução a arquitetura de sistemas com .NET
 

Andere mochten auch

Pensando como um data scientist
Pensando como um data scientistPensando como um data scientist
Pensando como um data scientist
André Faria Gomes
 

Andere mochten auch (17)

The Traveler's Gift: My Notes
The Traveler's Gift: My NotesThe Traveler's Gift: My Notes
The Traveler's Gift: My Notes
 
What happened to Google Reader?
What happened to Google Reader?What happened to Google Reader?
What happened to Google Reader?
 
Pensando como um data scientist
Pensando como um data scientistPensando como um data scientist
Pensando como um data scientist
 
Java Script
Java ScriptJava Script
Java Script
 
Gestão 3.0 e Kudo Box
Gestão 3.0 e Kudo BoxGestão 3.0 e Kudo Box
Gestão 3.0 e Kudo Box
 
Lean 5S
Lean 5SLean 5S
Lean 5S
 
Wikipedia - De leitor a Contribuinte
Wikipedia - De leitor a ContribuinteWikipedia - De leitor a Contribuinte
Wikipedia - De leitor a Contribuinte
 
Gestão 3.0: Gestão Ágil
Gestão 3.0: Gestão ÁgilGestão 3.0: Gestão Ágil
Gestão 3.0: Gestão Ágil
 
Bematech IFRS
Bematech IFRSBematech IFRS
Bematech IFRS
 
Introduction to Underscore.js
Introduction to Underscore.jsIntroduction to Underscore.js
Introduction to Underscore.js
 
11 Regras de Bill Gates para a Vida
11 Regras de Bill Gates para a Vida11 Regras de Bill Gates para a Vida
11 Regras de Bill Gates para a Vida
 
Escolha ser mais feliz
Escolha ser mais felizEscolha ser mais feliz
Escolha ser mais feliz
 
Pensando Rápido e Devagar
Pensando Rápido e DevagarPensando Rápido e Devagar
Pensando Rápido e Devagar
 
Feedback 360
Feedback 360Feedback 360
Feedback 360
 
Porter's Five Forces: How to identiy attractive markets
Porter's Five Forces: How to identiy attractive marketsPorter's Five Forces: How to identiy attractive markets
Porter's Five Forces: How to identiy attractive markets
 
Steve Jobs - Lessons Learned
Steve Jobs - Lessons LearnedSteve Jobs - Lessons Learned
Steve Jobs - Lessons Learned
 
Porter's Five Forces
Porter's Five ForcesPorter's Five Forces
Porter's Five Forces
 

Ähnlich wie MVC MVP MVVM para Web

Utilizando o Padrão Presentation Model em Aplicações Flex
Utilizando o Padrão Presentation Model em Aplicações FlexUtilizando o Padrão Presentation Model em Aplicações Flex
Utilizando o Padrão Presentation Model em Aplicações Flex
Eric Cavalcanti
 

Ähnlich wie MVC MVP MVVM para Web (20)

Historia do mvc, mvp e mvvm no android
Historia do mvc, mvp e mvvm no androidHistoria do mvc, mvp e mvvm no android
Historia do mvc, mvp e mvvm no android
 
Arquitetura Model View Controller
Arquitetura Model View ControllerArquitetura Model View Controller
Arquitetura Model View Controller
 
Treinamento MVC .Net
Treinamento MVC .NetTreinamento MVC .Net
Treinamento MVC .Net
 
Introdução ao desenvolvimento front end usando bootstrap e angular js
Introdução ao desenvolvimento front end usando bootstrap e angular jsIntrodução ao desenvolvimento front end usando bootstrap e angular js
Introdução ao desenvolvimento front end usando bootstrap e angular js
 
Padrões Arquiteturais de Sistemas
Padrões Arquiteturais de SistemasPadrões Arquiteturais de Sistemas
Padrões Arquiteturais de Sistemas
 
Treinamento Básico Sobre ASP.NET MVC
Treinamento Básico Sobre ASP.NET MVCTreinamento Básico Sobre ASP.NET MVC
Treinamento Básico Sobre ASP.NET MVC
 
Desvendando ASP.NET MVC
Desvendando ASP.NET MVCDesvendando ASP.NET MVC
Desvendando ASP.NET MVC
 
Desvendando ASP.NET MVC
Desvendando ASP.NET MVCDesvendando ASP.NET MVC
Desvendando ASP.NET MVC
 
Apresentacão Android Components - Programando em camadas
Apresentacão Android Components - Programando em camadasApresentacão Android Components - Programando em camadas
Apresentacão Android Components - Programando em camadas
 
Arquitetura de sistemas web
Arquitetura de sistemas webArquitetura de sistemas web
Arquitetura de sistemas web
 
Indo alem do_mvc_node_js
Indo alem do_mvc_node_jsIndo alem do_mvc_node_js
Indo alem do_mvc_node_js
 
Jsf – Java Sever Faces
Jsf – Java Sever FacesJsf – Java Sever Faces
Jsf – Java Sever Faces
 
Desenvolvimento web com .NET Core - Meetup São Carlos
Desenvolvimento web com .NET Core - Meetup São CarlosDesenvolvimento web com .NET Core - Meetup São Carlos
Desenvolvimento web com .NET Core - Meetup São Carlos
 
Infoeste 2014 - Desenvolvimento de um CMS com Codeigniter Framework(PHP)
Infoeste 2014 - Desenvolvimento de um CMS com Codeigniter Framework(PHP)Infoeste 2014 - Desenvolvimento de um CMS com Codeigniter Framework(PHP)
Infoeste 2014 - Desenvolvimento de um CMS com Codeigniter Framework(PHP)
 
Angular 2
Angular 2Angular 2
Angular 2
 
Palestra ASP.NET MVC
Palestra ASP.NET MVCPalestra ASP.NET MVC
Palestra ASP.NET MVC
 
ASM.NET MVC 5 + Entity Framework - Explorando conceitos e criando um projeto ...
ASM.NET MVC 5 + Entity Framework - Explorando conceitos e criando um projeto ...ASM.NET MVC 5 + Entity Framework - Explorando conceitos e criando um projeto ...
ASM.NET MVC 5 + Entity Framework - Explorando conceitos e criando um projeto ...
 
Utilizando o Padrão Presentation Model em Aplicações Flex
Utilizando o Padrão Presentation Model em Aplicações FlexUtilizando o Padrão Presentation Model em Aplicações Flex
Utilizando o Padrão Presentation Model em Aplicações Flex
 
Treinamento ASP.NET 2014
Treinamento ASP.NET 2014Treinamento ASP.NET 2014
Treinamento ASP.NET 2014
 
ASP.NET MVC
ASP.NET MVCASP.NET MVC
ASP.NET MVC
 

Mehr von André Faria Gomes

Mehr von André Faria Gomes (20)

Meetup Escale - Gestão para Equipes de Alta Performance
Meetup Escale - Gestão para Equipes de Alta PerformanceMeetup Escale - Gestão para Equipes de Alta Performance
Meetup Escale - Gestão para Equipes de Alta Performance
 
Protagonistas da inovação - Como criar e gerir os negócios do futuro
Protagonistas da inovação - Como criar e gerir os negócios do futuroProtagonistas da inovação - Como criar e gerir os negócios do futuro
Protagonistas da inovação - Como criar e gerir os negócios do futuro
 
A Mobilidade como Propulsor da Transformação Digital
A Mobilidade como Propulsor da Transformação DigitalA Mobilidade como Propulsor da Transformação Digital
A Mobilidade como Propulsor da Transformação Digital
 
Além da Agilidade 2019 - KickOff Wow
Além da Agilidade 2019 - KickOff WowAlém da Agilidade 2019 - KickOff Wow
Além da Agilidade 2019 - KickOff Wow
 
Modern systems architectures: Uber, Lyft, Cabify
Modern systems architectures: Uber, Lyft, CabifyModern systems architectures: Uber, Lyft, Cabify
Modern systems architectures: Uber, Lyft, Cabify
 
Breaking the monolith
Breaking the monolithBreaking the monolith
Breaking the monolith
 
Agilidade - APAS
Agilidade - APASAgilidade - APAS
Agilidade - APAS
 
Principles and Radical Transparency - Lessons Learned from Ray Dalio
Principles and Radical Transparency - Lessons Learned from Ray DalioPrinciples and Radical Transparency - Lessons Learned from Ray Dalio
Principles and Radical Transparency - Lessons Learned from Ray Dalio
 
Bluesoft @ AWS re:Invent 2017 + AWS 101
Bluesoft @ AWS re:Invent 2017 + AWS 101Bluesoft @ AWS re:Invent 2017 + AWS 101
Bluesoft @ AWS re:Invent 2017 + AWS 101
 
Boas Práticas da Rede Supermercadista Wegmans
Boas Práticas da Rede Supermercadista WegmansBoas Práticas da Rede Supermercadista Wegmans
Boas Práticas da Rede Supermercadista Wegmans
 
Boas Práticas para Supermercadistas inspiradas no Whole Foods, Sprouts Marke...
Boas Práticas para Supermercadistas inspiradas no Whole Foods, Sprouts Marke...Boas Práticas para Supermercadistas inspiradas no Whole Foods, Sprouts Marke...
Boas Práticas para Supermercadistas inspiradas no Whole Foods, Sprouts Marke...
 
Change management - Kotter’s eight-step model
Change management - Kotter’s eight-step model Change management - Kotter’s eight-step model
Change management - Kotter’s eight-step model
 
Palestra na Uninove sobre Agilidade
Palestra na Uninove sobre AgilidadePalestra na Uninove sobre Agilidade
Palestra na Uninove sobre Agilidade
 
Gestão Ágil com Management 3.0
Gestão Ágil com Management 3.0Gestão Ágil com Management 3.0
Gestão Ágil com Management 3.0
 
Lições aprendidas em 10 anos de agilidade
Lições aprendidas em 10 anos de agilidadeLições aprendidas em 10 anos de agilidade
Lições aprendidas em 10 anos de agilidade
 
Os 7 hábitos das pessoas altamente eficazes
Os 7 hábitos das pessoas altamente eficazesOs 7 hábitos das pessoas altamente eficazes
Os 7 hábitos das pessoas altamente eficazes
 
Objetividade: A Virtude Esquecida
Objetividade: A Virtude EsquecidaObjetividade: A Virtude Esquecida
Objetividade: A Virtude Esquecida
 
Lições de empreendedorismo com Flávio Augusto
Lições de empreendedorismo com Flávio AugustoLições de empreendedorismo com Flávio Augusto
Lições de empreendedorismo com Flávio Augusto
 
Capital de Giro e Ciclo Financeiro
Capital de Giro e Ciclo FinanceiroCapital de Giro e Ciclo Financeiro
Capital de Giro e Ciclo Financeiro
 
Followership
FollowershipFollowership
Followership
 

MVC MVP MVVM para Web

  • 1. MVC MVP MVVM André Faria Gomes @andrefaria
  • 2. MVC 1979 (Smalltalk) Model-View-Controller Melhor arquitetura através de separation of concerns Isola os dados (model) das interfaces de usuário (views) Controlers tratam da entrada de usuário e coordenação das views e models
  • 3. 4 VC ipt M r vaSc Ja Backbone, Ember.js and JavaScriptMVC Ajuda a resolver o problema do Js spaghetti estruturando o código
  • 4. Gerenciar os dados de negócio Não diz respeito a UI, porém quando um modelo muda, geralmente vai notificar observadores para que as mudanças também ocorram na apresentação. Podendo ter vários observadores por modelo. Models
  • 5. Representações visuais dos modelos em seu estado atual A tarefa de atualizar o modelo (geralmente) é do controller Usuários interagem com a view, lendo, editando, etc. Views
  • 6. Templates Muitos frameworks usam templates porque é uma má prática (de codificação de e performance) criar longos blocos de strings concatenadas. A aplicação recebe dados em Json e aplica no Template
  • 7.
  • 8.
  • 9. Intermediários entre models e views Atualiza a views quando o model muda Atualiza o model quando o usuário altera a view Nem sempre explícito, no backbone a responsabilidade é divida pelos Routes e View, outros frameworks como o Spine já tem o Controller explícito. Controllers
  • 10. Separation of Concerns facilita manutenção Desacoplar model e view facilita a escrita de testes Permite reutilizar lógica em diferentes locais da aplicação Benefícios
  • 11. 1990 (Smalltalk) MVP Model-View-Presenter O Presenter é um componente que contém a regra de negócio relacionada a user-interface, invocações da view são delegadas para o presenter. O presenter fala com a view e com o model, porém esses são isoldados entre si. Eles fazem o bind eles a view e o controller. As views expõe seeters para que o presenter possam alterar seus dados. Útil quando é preciso reutilizar regras de apresentação. Muito usado em grandes aplicações corporativas.
  • 13. MVVM 2005 Microsoft Model View ViewModel Baseado em MVC e MVP procura separar de forma mais clara a regra de negócio da interface de usuário das outras regras e comportamentos da aplicação através data- bindings declarativos. Isso facilita que UI e desenvolvimento possam ocorrer simultaneamente na mesma base de código. Desenvolvedores de UI escrevem bindings no HTML, enquanto desenvolvedores cuidam do resto.
  • 14. Dados apenas, nada de Comportamento (Tipicamente) Não formatam informação nem fazem aparecer dados na UI, isso é gerenciado pelo ViewModel Models
  • 15. Interação com o usuário Não é responsável por gerenciar o estado Representam o estado do ViewModel Geralmente é apenas um HTML com bindings declarativos Views
  • 16. Um tipo de controller especializado que converte dados. Transforma o model e view e passa comandos do views para o model. Representa os dados da Views para o Model. Testável Pode ser exagero para UI’s muito simples Viewmodel
  • 17.
  • 18. “I must admit that when I first reviewed implementations of MVVM (e.g KnockoutJS, Knockback), I was surprised that any developer would want to return to the days of old where we mixed logic (JavaScript) with our markup and found it quickly unmaintainable.” Addy Osmani