Artigo do tipo Tutorial
Porque esse artigo é útil
É muito interessante para todos os desenvolvedores a habilidade de desenvolver classes que poderão ser reutilizadas. No caso do .NET framework, que possui uma série de “subtecnologias”, é de extrema importância que existam bibliotecas que possam ser portadas entre elas, pois não é interessante para o desenvolvedor Windows 8 que deseja construir o mesmo aplicativo para Windows Phone reescrever todo o código. Com a utilização de bibliotecas portáveis, é possível para o desenvolvedor reduzir o tempo e os custos de desenvolvimento e testes em casos de desenvolvimento multiplataforma. Esse artigo irá apresentar um exemplo de biblioteca de classes portável entre os Windows 7 e 8, Silverlight e Windows Phone.

A criação de bibliotecas multiplataforma não é uma tarefa tão simples quanto possa parecer à primeira vista. Não se trata simplesmente da criação de um pacote de classes que será reutilizado ao longo da vida do desenvolvedor; aqui, são dispositivos diferentes. Isso traz uma série de implicações, que o artigo irá destacar e resolver. Como é possível que plataformas diferentes, que rodam em dispositivos/ambientes completamente distintos, possam utilizar as mesmas classes, sem nenhuma alteração de código? Trata-se de uma das grandes vantagens do .NET framework.

A capacidade de desenvolver para várias plataformas é uma habilidade que todos os desenvolvedores desejam possuir. Isso fornece uma maior variedade de oportunidades, maiores salários, etc. Além disso, é extremamente importante que haja ao menos uma ideia a respeito dos diferentes ambientes com os quais o desenvolvedor pode trabalhar. A grande vantagem que existe quando se fala no .NET framework é que trata-se de um framework programado para rodar em diversas plataformas, o que torna a tarefa da criação de bibliotecas que rodem em todas elas muito mais simples. Com o .NET, é possível desenvolver aplicações para web, desktop, mobile, cloud, etc. Ou seja, trata-se de um framework de desenvolvimento que favorece a criação de Portable Class Libraries, ou Bibliotecas de Classes Multiplataforma.

Muitos podem comentar: mas é muito mais simples copiar todo o código de uma plataforma para outra! Simplicidade não é garantia de qualidade, nem de velocidade. Além disso, como realizar manutenção em um código idêntico que existe em quatro ou cinco aplicações? Não seria melhor se esse código pudesse ser escrito, compilado, testado e armazenado somente uma vez? É exatamente isso que o desenvolvimento multiplataforma no .NET permite ao desenvolvedor.

Porém, é preciso ter cuidado. O .NET framework oferece suporte a várias plataformas e cada uma delas possui suas peculiaridades. Portanto, é preciso estar atento aos elementos suportados em cada uma. Se o desenvolvedor deseja atingir todas as plataformas, ele terá um conjunto bem pequeno de classes à disposição. Porém, se o desejado é desenvolver apenas para Windows 8 e Windows Phone, por exemplo, o leque de opções é muito grande, uma vez que são duas plataformas muito semelhantes.

Cross-platform Development

Os desenvolvedores .NET têm visto uma diversificação muito grande de plataformas de computação ao longo dos últimos anos. Computadores pessoais não são mais o grande foco de desenvolvimento, e os smartphones, tablets, consoles e a nuvem ganharam espaço. Portanto, muitas vezes faz mais sentido, quando se projeta um aplicativo, ter como alvo mais de uma dessas plataformas. E para criar uma solução mais viável em termos de manutenção, é interessante que possa haver o reuso de bibliotecas através de projetos. As Bibliotecas de Classes Portáveis são a solução para esses casos. Elas permitem que o desenvolvedor escreva código para uma combinação de plataformas. Há alguma perda de funcionalidade, como é possível observar na Figura 1, porém o ganho em portabilidade e em manutenção de código é muito superior. O desenvolvedor estará desenvolvendo para a pequena interseção de classes entre todas as tecnologias.

Figura 1. Relação entre os recursos das tecnologias do .NET framework

É importante ter em mente que nem todas as classes são boas candidatas à portabilidade. Para isso, é necessário que ela tenha exatamente o mesmo comportamento em todas as plataformas. Além disso, PCLs (Portable Class Libraries, como serão chamadas daqui em diante) não podem referenciar bibliotecas não portáveis. Isso faz com que seja um pouco mais complicado escrevê-las, e é necessário algum conhecimento acerca da API .NET.

O grande motivo pelo qual as APIs não estão disponíveis para todas as plataformas é bastante óbvio. É inviável que diferentes ambientes, e até dispositivos, tenham as mesmas classes de entrada e saída de dados, por exemplo. Com isso em mente, é impossível transformar layouts em classes portáveis, pelo simples fato de que as tecnologias são diferentes, e a forma como as telas serão posicionadas também o será. A Tabela 1, retirada do site da Microsoft, mostra o que é suportado pelas plataformas.

abrir imagem em nova janela

Tabela 1. ...

Quer ler esse conteúdo completo? Tenha acesso completo