DevMedia - asp.net, Java, Delphi, SQL e web Design, tudo em um só lugar!
Bem vindo a DevMedia!
LOGIN:     SENHA:
 
 

  Este é um post disponível para assinantes MVP
Este post também está disponível para assinantes da .net Magazine DIGITAL
ou para quem possui Créditos DevMedia.  Clique aqui para saber mais!

Conheça o framework MVVM Caliburn.Micro - Artigo Revista . Net Magazine 87

Esse artigo irá explicar o que é e como utilizar o Caliburn.Micro, um framework de MVVM, Open Source, leve e compacto que pode ser utilizado para a construção de aplicações WPF, Silverlight ou Windows Phone 7.





.net Magazine 87

[Artigo disponível no Leitor Digital DevMedia. Clique aqui para acessá-lo]

> Clique aqui para ler todos os artigos da .net Magazine 87


  São três os padrões mais conhecidos para construção de camadas de apresentação. O MVC, MVP e o MVVM. Cada uma dessas siglas representa um padrão de arquitetura, no que diz respeito à interface de usuário (camada de apresentação). O grande objetivo desses padrões é isolar ao máximo a camada de apresentação, no caso a letra V de todos eles, o View.
Aliás, esses padrões concordam apenas nas duas primeiras letras, o V (View) e o M (Model). A terceira parte, que é a que difere cada um deles, é também a que explica melhor como cada um deles funciona.

MVC (M – V – Controller)
MVC é o avô de todos esses padrões. Ele surgiu lá no começo da década de 80, mas se tornou muito popular na criação de aplicações Web. Sua dinâmica é simples, todas as requisições da aplicação são direcionadas para a camada Controller que acessa a camada Model para processar a tal requisição, e por fim exibe o resultado na camada View. Apesar de haver adaptações do MVC em aplicações ASP.NET Web Forms, o padrão MVC só passou a ser levado integralmente a sério na plataforma .NET com o surgimento do ASP.NET MVC. É a prova de que o padrão MVC inverte mesmo as coisas. Tanto que a Microsoft precisou criar uma versão diferente do ASP.NET, só para tratar desse assunto.
O ASP.NET MVC é totalmente diferente do ASP.NET Web Forms. Nele, todas as URLs apontam para métodos e classes de Controller, que se encarregam de processá-las e renderizar a View correta. No ASP.NET MVC não existem Postbacks, ViewStates e mais uma série de outras coisas que tornam ASP.NET Web Forms mais familiar para programadores acostumados com o Windows Forms.

MVP (M – V – Presenter)
Antes do surgimento do ASP.NET MVC, uma vertente dentro da comunidade .NET passou a procurar alternativas para não colocar muito código nos eventos de code-behind da camada de apresentação. Descobriu-se então que existia um padrão parecido com o MVC e que poderia facilmente ser implementado no ASP.NET Web Forms, ou até mesmo no Windows Forms. É o padrão MVP.
A camada Presenter faz o papel da camada Controller aqui, mas ela não recebe diretamente as requisições. No caso do ASP.NET WebForms, as URLs da aplicação continuam apontando paras as páginas aspx. A diferença é que nesse padrão é preciso criar uma interface que representa a View. Essa interface precisa conter todos os elementos importantes da View, principalmente aqueles que precisam acessar na camada Presenter. 
A classe de code-behind das páginas e User Controls deverão implementar essas interfaces. A camada Presenter, por sua vez, irá se comunicar com a camada View também através dessas interfaces. Por fim, qualquer evento disparado na página deverá ser redirecionado para a classe Presenter.
Esse é o princípio básico, que consegue retirar do code-behind a maior parte do código, principalmente código que envolve algum tipo de lógica de negócio. Do ponto de vista de testabilidade é genial, pois é possível criar testes unitários para validar as classes da camada de apresentação.
Mas colocando essa questão de testabilidade de lado, esse tipo de implementação só traz complexidade adicional para o projeto, uma vez que precisa de uma interface para cada página da aplicação. É importante avaliar bem se compensa a adoção do padrão MVP, principalmente por conta desse nível de complexidade adicional.

MVVM (M – V – ViewModel)
O MVVM surgiu junto com o WPF e Silverlight para resolver o mesmo problema que os seus ancestrais resolvem. Aliás, o MVVM é baseado num padrão chamado Presentation Model criado por Martin Fowler. A ideia por trás desse padrão é representar o estado e comportamento da apresentação dos dados de forma independente dos controles utilizados na interface de usuário. Para isso ele introduz o conceito de uma classe que prepara os dados da camada de negócio para serem apresentados na interface. Além disso, como ele também abstrai o comportamento, essa camada de interface não mais possui lógica de negócio em si.
O MVVM define três figuras bem distintas, que compõem o seu próprio nome. A View representa a janela onde será exibida informação. Mas não apenas uma janela, o conceito aqui é mais abrangente. Uma view pode ser constituída de um conjunto de controles visuais ou, ser apenas um controle. O ViewModel nada mais é que uma classe que contém as ações e dados que uma View pode tomar e exibir, encapsulando sua lógica. Ele é responsável em preparar o Model para ser exibido pela View (observe como se assemelha ao Presentation Model). Model por sua vez são as classes de negócio envolvidas mais o que for necessário para a lógica do negócio.
A grande sacada do ViewModel está nos avançados recursos de binding e commands que estão presentes no WPF e Silverlight. Graças a eles, a comunicação entre o ViewModel e a View pode ser toda configurada no próprio código XAML. O ViewModel obtém os dados do Model e notifica a View em eventuais mudanças. A View por sua vez acessa os dados expostos pelo ViewModel através do recurso de Binding. As ações que são tomadas, por exemplo, o que fazer no click de um botão estão encapsuladas no ViewModel em objetos classificados de Commands, ou comandos, que por sua vez estão também ligados à View por Binding. (Figura 1). 
"
A exibição deste artigo foi interrompida.

  Este é um post disponível para assinantes MVP
Este post também está disponível para assinantes da .net Magazine DIGITAL
ou para quem possui Créditos DevMedia.  Clique aqui para saber mais!


Rodrigo Sendin
é Arquiteto de Sistemas e trabalha com desenvolvimento de Software há mais de 13 anos. Tecnólogo formado pela FATEC de Americana e MCP .NET.
O que você achou deste post?

    0 COMENTÁRIO

[Fechar]

Este post é fechado - você precisa ter acesso ao post para incluir um comentário.


Nenhum comentário foi postado - seja o primeiro a comentar!
Cursos relacionados
Publicidade
[Fechar]

Você precisa estar logado para dar um feedback.

Clique aqui para efetuar o login
[Fechar]


Este post está fechado. Saiba mais sobre a assinatura MVP!
web-03
DevMedia  |  Anuncie  |  Fale conosco
Hospedagem web por Porta 80 Web Hosting
2013 - Todos os Direitos Reservados a web-03