Episódio I - Preparando uma PCL para Xamarin

Publicado em 17/02/2016

Cover

Episódio I - Preparando uma PCL para Xamarin

Este é um material de apoio que eu publicarei em paralelo à série MVV O que?. Serão dois posts, onde eu irei ensinar como deixar a sua PCL pronta (além de instruir o que é uma PCL), e explanar acerca da necessidade de trabalhar com assincronia quando se trata de desenvolvimento Cross-Mobile com Xamarin. Sendo essa uma série assíncrona, as postagens de MvvmCross seguem naturalmente em paralelo :)

PCL?

Portable Class Libraries (PCLs) são tipos específicos de Class Library que podem ser consumidos em multiplos tipos de projeto. Dependendo de como ela é criada, a mesma PCL pode ser utilizada no seu projeto ASP.Net, Windows Phone e até mesmo Android e iOS usando Xamarin. A um conjunto de plataformas, da-se o nom de profile. Mais informação sobre profiles pode ser encontrada aqui

Quando você cria uma PCL, você escolhe quais plataformas ela vai utilizar. Isso determina quais bibliotecas do .net você poderá usar dentro da sua Class Library, sempre limitando por baixo. Por exemplo: Nenhuma das plataformas móveis tem acesso ao System.IO. Você pode usar System.IO em uma PCL que tem como alvo .Net 4.5 e Windows 8, mas ao adicionar Xamarin.Android ou Windows Phone (plataformas que não podem acessar System.IO), você não pode mais referenciar esse namespace na sua PCL.

Como a palavra chave do Xamarin é reuso de código, é crucial tentar manter a maior quantidade possível de código dentro de uma PCL que pode ser usada por todas as suas plataformas. Claro que nem todo código pode ser compartilhado (discutiremos isso mais a fundo na série “MVV O que?”), mas quanto mais código estiver na sua PCL, menos tempo você perderá corrigindo bugs através dos dispositivos.

E o que pode ser compartilhado?

Uma regra geral é tentar compartilhar tudo que não for referente à camada de visualização. Orquestração da navegação, chamadas de rede, salvamento e recuperação de estado, constantes e até mesmo métodos de extensão que são pertinentes a todas plataformas podem e devem ser incluídos na sua PCL.

Dos exemplos acima, o que sem dúvidas é o maior facilitador é a parte de chamadas de rede. Mesmo que sua aplicação Xamarin não faça uso do padrão MVVM, deixar toda a parte de comunicação com APIs do seu app disponível em uma PCL é algo fundamental. Digo isso porque as chamadas à rede seguem um padrão que independe da plataforma: Você faz uma requisição, o servidor serve uma resposta e você faz algo com esse resultado.

Ao fazer toda a parte de rede em uma PCL, você consegue colocar todo o tratamento de erros e transformação dos dados em um único lugar. Alteração na API? Bug no client? Comportamento deve ser alterado? Tudo se resolve em todas as suas aplicações ao mudar uma unica chamada. Legal, né?

E como faz para brincar disso?

Criar um projeto de PCL é simples. No VS15, sigo o caminho File > New Project > Visual C# > Windows > Class Library (Portable). Após selecionar o local de criação, você verá uma lista com as plataformas possíveis. Escolha as que você pretende usar e clique em ok.

Exemplo de criação de PCL

Algo que costuma causar um certo pânico é o fato de que alguns targets de PCL não tem acesso ao namespace System.Net.Http e nem tem suporte a operações assíncronas (a tabela de quais são esses targets pode ser encontrada aqui). Para resolver esse problema, você deve instalar alguns pacotes NuGet que irão permitir o uso dessas libs. Os pacotes são o Microsoft.Bcl.Async e o Microsoft.Net.Http.

Feito isso, sua PCL está pronta para se tornar o ponto de inicio do seu projeto! No próximo post desta série, Irei falar sobre a importancia de usar assíncronia e o quanto isso é facilitado ao usar Xamarin, então fiquem ligados e até a próxima!

blog comments powered by Disqus