jump to navigation

WPF: dicas para começar com MVVM 3/3/09

 

Fala pessoal!

 mvvm

Voltando ao blog um pouco mais técnico, eu tenho recebido ultimamente algumas perguntas com relação ao design pattern MVVM (Model-View-ViewModel). Não sei porque esse pattern só caiu “na boca do povo” agora, sendo que ele já está em uso de diversas maneiras no WPF desde 2005.

De qualquer forma, vocês pedem, eu mando!

Então comecemos com o básico: o que é MVVM? E por quê eu preciso saber?

[Atenção: este post é mais voltado para desenvolvedores que já têm alguma experiência com WPF. Se você está começando, recomendo os artigos no MSDN sobre WPF básico que meu pai e eu publicamos.]

O padrão MVVM é hoje o mais usado em aplicações LOB com WPF (e Silverlight), porque ele permite criar de maneira fácil aplicações bem estruturadas usando os recursos do WPF como databinding e templates.

Nessas aplicações, o modelo (classes que representam objetos de negócio) está completamente separado da view (interface visível). A “cola” que liga os dois é o ViewModel (também chamado de Presentation Model), que nada mais é que uma abstração de uma view: ele expõe algumas propriedades do modelo (e calcula ou adiciona mais algumas, se for necessário) e é usado como DataContext para fazer o binding (two-way) com a view, que é montada a partir de templates. Ele também é usado para guardar o estado da view e fazer as atualizações no modelo. O tratamento de “ações” da interface é feito por meio de Commands no WPF, ligados ao ViewModel.

E qual a vantagem? Primeiro, o fato de usar ViewModels como abstração da view permite criar criar views que não conhecem o modelo, e vice-versa. Isso significa que o designer e o desenvolvedor podem trabalhar completamente separados durante todo o projeto, e só se encontrarem na hora de criar o ViewModel (claro, não sejamos tão drásticos…). Além disso, esse pattern permite fazer testes (unit tests, primariamente) da interface testando apenas o ViewModel, ou seja, sem usar UI Automation ou outros truques.

Finalmente, é bom saber que para esse padrão, há várias boas práticas para validação, acesso a dados, navegação, e outras funções do dia-a-dia, então é mais fácil encontrar soluções comprovadas para os nossos problemas comuns.

Então como começar?

Sigam a lista de links a seguir (em inglês) que certamente vocês vão encontrar rápido o caminho para o MVVM com os “gurus” do WPF – os WPF Disciples. Espero que seja útil!

1. Comece pelo vídeo com Karl Shifflett no Channel 9 com a explicação geral do pattern

2. Siga pelo vídeo detalhado “mão na massa” em WPF com Josh Smith (ou em Silverlight com Tim Heuer)

3. Continue com alguns artigos escolhidos a dedo:

4. Brinque um pouco com uma aplicação um pouco mais real. Algumas opções você encontra no CodeProject:

E boa sorte! Aguardo seus comentários!

Abraços!

Roberto

Categories: Silverlight, WPF  

Comments»

1. Sebastião Cartaxo - 16/2/10

Roberto,vc está surpreso que o padrão MVVM existe desde 2005 e que agora é que caiu na boca do povo. Pois eu estou surpreso que o povo já tenha chegado lá. Primeiro pq WPF e VisualStudio só começaram a se entender a partir de 2008. De lá pra cá tem menos de 2 anos. Depois pq os que costumam adotam mais cedo esses novos padrões, os saintes das faculdades, dessa vez tiveram uma dificuldade. O caso é que agora é preciso planejar, é preciso arquitetura. E são poucos os arquitetos de software. Designer de interface, loucos pelo WPF, vão aparecer de montão. Mas… e a arquitetura, quem vai saber fazer?

2. Roberto Sonnino - 17/2/10

Sebastião,

Obrigado pelo seu comentário!

Eu acredito que o “gosto” pela arquitetura e boas práticas vem quase naturalmente quando o desenvolvedor começa a se aprofundar no desenvolvimento.
Para mim, uma das coisas que separa um desenvolvedor (eternamente) iniciante de um desenvolvedor que evolui é a auto-crítica: olhar o seu código/arquitetura/etc e ver que pode melhorar; estudar como fazer isso e evoluir sempre.
Por isso posso te dar duas respostas:
1. Se o dev for responsável ele vai separar a interface da lógica usando MVVM e com isso o designer pode “cair” no WPF (mesmo com o Blend) sem se preocupar.
2. Se ninguém estudar arquitetura, estude você e se destaque no mercado! Se quiser saber mais sobre MVVM fique ligado no XAMLCast (www.xamlcast.net) pois vamos falar de MVVM no episódio desta semana.

Abraços!
Roberto

3. Expression Blend 4 facilitando com MVVM « Visão Widescreen - 28/7/10

[...] WPF: dicas para começar com MVVM (blog do Roberto Sonnino) [...]

4. Steimntz Machado de Figueiredo - 30/7/10

Porque não caio na “boca do povo” ? Simples, Microsoft não é criadora de tendências e muito menos inovadora. Então ela só vem copiando e não trazendo coisas novas.

Exemplo:

C => Basic;
Delphi => VisualBasic;
J# => Java e JVM;
C# => Java;
F# e AspMVC => Ruby on Rails.