Olá Caro(a) Leitor(a), hoje eu vou falar um pouco sobre o que aconteceu no evento chamado Build da Microsoft. Build é um evento para desenvolvedores e que acontece todo ano nos Estados Unidos, pelo menos até agora. O evento trouxe uma novidade referente ao desenvolvimento de software universal, o que quer dizer isso?

O desenvolvimento universal é um desenvolvimento normal e focado para várias plataformas como por exemplo: Windows 8.1 e Windows Phone. Dessa plataforma você pode com um clique, fazer com que o mesmo aplicativo funcione para Windows Phone e Windows 8.1. Você já pensou em desenvolver para o Windows 8.1 e com um passe de mágica, o mesmo código rodar no Windows Phone? 
Pois é, isso agora é possível com a ferramenta Visual Studio Update 2 RC (Release Candidate) da Microsoft. Foi mostrado um vídeo sobre isso no site Channel 9 (http://channel9.msdn.com/Events/Build/2014/3-591) dando mais detalhes e mostrando alguns exemplos. No evento Build são feitos muito exemplos, o apresentador Navit Saxena falou rapidamente como transformar alguns exemplos daqueles para Windows Phone clicando com o botão direito dentro da ferramenta de desenvolvimento.

Você acha que isso veio para facilitar a vida do desenvolvedor? Lógico que sim, a resposta não pode ser mais clara do que isso. O mesmo desenvolvedor terá menos trabalho para portar o aplicativo de uma plataforma para outra. Mas a coisa não é bem assim.

Para criar um aplicativo do tipo universal, é necessário escolher o menu Store Apps e depois o sub-menu Universal Apps. Se você fez um aplicativo do tipo Windows Apps ou Windows Phone Apps antigo e quer passar agora outra plataforma, você não vai conseguir. Na parte de templates da ferramenta dá pra ver mais detalhes sobre esses menus citados anteriormente. Veja a figura 1.


Figura 1 - Universal Apps menu

Existem aplicativos para Windows Phone feitos em Silverlight até hoje. Eles funcionam muito bem por sinal, até na nova plataforma, mas eles não poderão ser transformados para Windows 8.1 a não ser que você programe todo o código novamente. Eu por exemplo, tenho alguns aplicativos publicados na loja da Microsoft. Para migrar para o Windows 8.1, terei que reescrever tudo novamente.

Até o momento pelo que vi e estou sabendo, você poderá desenvolver em C#, C++ e JS o aplicativo universal. Acredito que em breve estará disponível para outras linguagens. 

Se você tem um aplicativo universal Windows 8.1 e queira passar para Windows Phone (que será em breve renomeado para Windows), basta clicar com o botão direito em cima do projeto, e depois escolher o menu Add Windows Phone 8.1…. Veja a figura 2.



Figura 2 - Transformar de Windows 8.1 para Windows Phone 8.1 com um clique.

A figura 2 mostra claramente sobre a transformação de um aplicativo feito para Windows 8.1 e transformando para Windows Phone 8.1 com um clique. Com ele você vai poder rodar no Windows Phone e Windows sem qualquer problema. Uma solução fica com dois projetos rodando sem qualquer problema. Veja a figura 3.





Figura 3 - Dividindo os projetos

Note que na figura 3 tem um terceiro projeto foi criado com o objetivo de compartilhar dados entre os projetos. Nós chamamos esse projeto Shared ou aquele que você pode executar nas duas plataformas. Uma imagem ou um código C# pode ser compartilhado dentro desse projeto Shared.

Se você quiser escrever algum código específico para rodar no Window ou no Windows Phone, pode ser usado variáveis locais. Dependendo da variável, parte do código vai funcionar só no Windows ou só no Windows Phone. Veja o exemplo abaixo:

#if WINDOWS_PHONE_APP
#if WINDOWS_APP

Isso faz com que no “debug", a ferramenta verifica qual é a plataforma antes de executar qualquer parte específica do código. Dentro do #if para Windows Phone você pode pegar as variáveis específicas do smartphone e assim por diante.

E como você pode emular os projetos que estão disponíveis para duas plataformas? É simples fazer isso. A ferramenta Visual Studio mostra pra você qual plataforma você pode executar o projeto. Está no final sub-menu chamado Emulador Startup project. Lá você pode escolher qual Hub executar.

Pra quem veio de ferramentas antigas da Microsoft e tentou fazer algum projeto ou classe portável para um dispositivo ou para outro; viu que não é tão simples assim. No meu caso, estava querendo fazer uma classe em C# responsável por conectar ao banco de dados ou fazer criptografia de várias plataformas ao mesmo tempo. Criei as classes para funcionar na Web, Windows e Mobile, só que na hora de chamar ou referenciar, a ferramenta nunca aceitava e para resolver o problema tive que criar uma classe específica para Mobile. Era a única que não funcionava, a da Web e Desktop funcionava perfeitamente. 

Agora a Microsoft lançou junto do Visual Studio o chamado código universal “cross plataform”. O projeto pode ser criado dentro da mesma solução para Windows e Windows Phone. Note que a ideia principal é ter a camada para acesso a banco, criptografia ou regra de negócio, mantendo separadamente layouts separados acessando as mesmas classes. É como funciona um Web Service em JSon por exemplo. Eu posso hoje criar um Web Service que tem regra de negócio e acesso a banco para depois construir layouts que acessem o serviço.

O projeto com classe universal chama “portable” ou classe portável. A figura 4 mostra mais detalhes. Uma classe com regra de negócio, acesso a banco, criptografia ou qualquer outra coisa pode ser colocado dentro do projeto portável. Não há mais a necessidade de escrever dois códigos em diferentes layouts ou camadas de interface.




Figura 4 - Classe “cross plataform”

O que achou disso tudo? Pra mim a Microsoft finalmente conseguiu unir as plataformas de forma que ajude bastante os desenvolvedores. A ferramenta Visual Studio é muito boa e produtiva, não precisa se preocupar com detalhes ou plataformas ou ambientes. Tudo é montado pra você com pequenos cliques. 

Era o que eu queria quando se fala de "cross plataform", e você já pensou em desenvolver um software que funcione no Windows 8.1 e no Windows Phone 8.1? Agora isso é possível aproveitando tudo que desenvolveu. Vamos ver o que vai acontecer daqui pra frente com a Microsoft.

Esse artigo foi baseado no vídeo do evento Buil e no artigo abaixo:
http://blogs.msdn.com/b/visualstudio/archive/2014/04/14/using-visual-studio-to-build-universal-xaml-apps.aspx

Vídeo: http://channel9.msdn.com/Events/Build/2014/3-591