O post Xamarin Forms – Diferença entre .NET Standard e Shared Projects aborda os diferentes métodos de compartilhamento de código entre projetos criados utilizando o Xamarin Forms e demonstra os benefícios e desvantagens de cada um desses métodos.
Xamarin Forms – Diferença entre .NET Standard e Shared Projects
Existem dois métodos que podem ser utilizados na hora de se criar uma solução mobile (cross platform) utilizando o Xamarin Forms: .NET Standard Libraries e Shared Projects.
Shared Projects
Basicamente ao criarmos uma solução Shared, toda a lógica de negócio e interface deve ser implementadas no projeto shared (compartilhado), isto é, você praticamente programa apenas no projeto shared.
A grande vantagem de um projeto Shared é a centralização de códigos específicos de cada plataforma no próprio projeto Shared. A separação dos códigos em cada plataforma deve ser feita através de diretivas de compilação como por exemplo:
#if __ANDROID__
// codigo que roda só no android
#endif
#if __IOS__
// codigo que roda só no ios
#endif
Um grande problema é que você só consegue ver erros no código do Android se compilar o projeto para Android. A mesma coisa acontece para as outras plataformas.
Outra característica de um projeto Shared é que ele não gera uma biblioteca. Todo o código Shared é acoplado no executável de cada plataforma.
Benefícios
- Permite que você compartilhe código entre vários projetos.
- Código compartilhado pode ser ramificado com base na plataforma usando diretivas de compilador (por exemplo. usando o
#if __ANDROID__
, conforme discutido em de criando aplicativos de plataforma cruzada documento). - Projetos de aplicativos podem incluir referências específicas da plataforma que o código compartilhado pode utilizar (como o uso de
Community.CsharpSqlite.WP7
na amostra Tasky para Windows Phone).
Standard Libraries
Ao utilizarmos o Standard Libraries não é necessário inserir diretivas do compilador para alternar o código, você implementa diretamente nos projetos de cada plataforma, o que for específico das mesmas e referência essa implementação no projeto shared. Vou dar um exemplo utilizando o projeto Wallpaper que criei utilizando o modo Standard Libraries.
O projeto Wallpaper é um aplicativo que troca o papel de parede do celular com base na imagem selecionada pelo usuário. Para que a ação de trocar o papel de parede funciona-se foi necessário implementar nas plataformas as ações relacionadas a alterar o papel de parede do celular e efetuar no projeto shared a chamada dessas ações por meio de uma interface.
Benefícios
- Permite que você compartilhe código entre vários projetos.
- Operações de refatoração sempre atualizam referências de todos os afetados.
- Uma área de superfície maior do .NET Base classe Library (BCL) está disponível que os perfis PCL.
Para conhecer mais sobre o assunto acesse: Visão geral do código do compartilhamento
Acesse nosso canal no YouTube para visualizar outros vídeos sobre programação, como por exemplo Python, Java e Desenvolvimento de sistemas comerciais utilizando a linguagem C#. Participe do nosso grupo de estudos no Facebook acessando o link.