Episódio I - Introdução à MVVM e MvvmCross

Publicado em 11/02/2016

Cover

Episódio I - Introdução à MVVM e MVVMCross

Este é o primeiro post de uma série de chamada “MVV o que?”. Nesta série eu irei falar do padrão MVVM (Model-View-ViewModel) aplicado em ambiente Android/Windows Phone usando Xamarin. Neste primeiro post, irei falar de conceitos básicos de Xamarin e explicar um pouco do Framework que será utilizado nos exemplos, o MvvmCross.

A motivação para a criação deste conteúdo é a carência de fontes sobre esse tema em português e a falta de pontos de início para os estudos de Xamarin como um todo. Acompanhando a comunidade Xamarin (no StackOverflow e no grupo Monkey Nights Devs, entre outros lugares) percebe-se que muitos desenvolvedores vêm de um background Android ou simplesmente desconhecem o padrão MVVM, que é amplamente difundido no .Net.

Minha abordagem tentará ser menos formal do que minhas resposta no StackOverflow, porém sem jamais perder detalhes importantes ao entendimento. Afinal, se o objetivo fosse parafrasear a definição de MVVM da Wikipedia, não tem motivo para estar aqui. Now let’s get down to business!

O que é MVVM mesmo?

Disclaimer - Esses são conceitos teóricos básicos com o objetivo de conceituar quem nunca ouviu falar de MVVM. Se você já tem familiaridade com esse padrão, pode pular essa parte inteira sem perder nada.

Model-View-ViewModel (MVVM) é um padrão criado por engenheiros da Microsoft com o objetivo de facilitar o desacoplamento das responsabilidades de UI e lógica de negócios durante o processo de desenvolvimento de Software. Programas escritos usando esse padrão são idealmente testáveis e de fácil manutenção. Para mais informação histórica sobre MVVM (que não é o objetivo desse post), você pode consultar esta página, da própria Microsoft

A maneira como o padrão funciona pode ser explicada de forma relativamente simples. Os models são a representação dos seus dados na base. ViewModels (VM) são abstrações que tem como intuito expor apenas o que é necessário para que as Views, que são a camada de apresentação, exibam os dados na tela com facilidade. Sendo assim, os dados (models) são moldados para gerar ViewModels que são usadas pelas Views para exibir os dados na tela. Por mais simples que pareça, essa separação fornece grandes benefícios.

Um deles é a facilidade de testar. ViewModels são classes independentes da interação do usuário. Isso quer dizer que escrever testes de unidade para elas é simples (e bastante aconselhável). Isso nos leva a um outro ponto crucial para o MVVM casar com o Xamarin: as ViewModels são independentes das Views. Idealmente, ViewModels nem sabem que uma View existe, portanto a mesma ViewModel pode ser usada por mais de uma interface!

“Legal, uma VM serve para muitas Views. E dai?”, você se pergunta. A resposta é: Essa é exatamente a proposta do Xamarin! Reúso do mesmo código para gerar apps em muitas plataformas. Ou seja, uma ViewModel escrita em C# pode reger as Views que vão ser usadas no seu app Android, iOS e Windows Phone! Wow!

E como isso tudo funciona com Xamarin?

É importante lembrar que MVVM é apenas um padrão. Precisamos de um framework que implemente este padrão para coloca-lo em prática. Existem inúmeros frameworks de MVVM disponíveis. O que usaremos durante essa série é o MvvmCross, que é um framework bastante completo e que funciona muito bem com Xamarin. Os conceitos de MVVM que você aprenderá, contudo, são aplicáveis a qualquer outro framework.

Quando se usa MvvmCross, você precisará de um projeto Core, que é onde ficará toda a lógica compartilhada entre as plataformas que você usará (ou seja, ViewModels e Models) e um projeto específico para cada plataforma que você irá utilizar. Sendo assim, uma estrutura que vai funcionar em Windows Phone, iOS e Android terá, no mínimo, 4 projetos.

Usar o MVVMCross na prática é super simples. Basta instalar o pacote MvvmCross.StarterPack em cada um dos seus projetos e ele criará uma estrutura mínima para começar o seu projeto. O assunto do próximo post será justamente esse: Entendendo a estrutura de um app MvvmCross.

Tem que pagar alguma coisa?

O MvvmCross é 100% gratuito e de código aberto. Você pode olhar o código, modifica-lo e usar o quanto quiser, sem pagar nada. O Xamarin, contudo, não é. Se quiser usar seu código para fazer aplicativos para Android ou iOS, você terá que pagar a licença do Xamarin. Sobre o funcionamento das licenças, este post, do Angelo Belchior, explica muito bem o funcionamento e os valores de cada modalidade.

Mesmo sem ter acesso à uma conta Xamarin paga, você pode iniciar um período de 30 dias de trial para praticar com apps Android/iOS e os exemplos usados aqui irão sempre cobrir UWP (Universal Windows Platform) para que todos possam aprender :)

blog comments powered by Disqus