Olá pessoal.

Como apresentado no post da semana passada, o Windows 8 e o Windows Phone 8 compartilham o mesmo Kernel, porém no Windows 8 as aplicações rodam em cima do Windows Runtime e no Windows Phone 8 as aplicações rodam em cima do Windows Phone Runtime – WinPRT.

Isto significa que as aplicações feitas para Windows 8 não rodam no Windows Phone 8 e vice versa. Mas podemos aproveitar grande parte do código e tornar o processo de criação das Apps multiplataforma bem simples.

Para que possamos criar Apps que aproveitem o código uma da outra, precisamos trabalhar com o padrão de desenvolvimento de software MVVM (Model / View / View Model) e uma tecnologia de desenvolvimento do .Net, no caso deste post vamos utilizar Portable Class Library, ou PCL.

Sobre o MVVM vou falar em outro post, mas só para recaptular:  (Caso queira se aprofundar um pouco mais, dá uma olhada aqui ó: http://aka.ms/mvvm)

“MVVM é um padrão de design de software para aplicações orientadas a dados (data driven) aonde temos, de forma bem simplista:

Model

  • Contém os dados

ViewModel

  • Apresenta os dados para VIEW de forma que estes dados possam ser consumidos e apresentados na interface visual

View

  • Apresenta os dados em um interface para o usuário (User Interface)
  • Recebe dados que o usuário informou em uma interface visual “

Existem outras maneiras de se fazer projetos multi plataforma, como por exemplo utilizar expressões condicionais de compilação como:

#if NETFX_CORE

using Windows.UI.Xaml.Media.Imaging;

#else

using System.Windows.Media.Imaging;

#endif"

Mas vou falar disto em outro post também.

Um projeto do tipo Portable Class Library no Visual Studio suporta um sub conjunto de assemblies .NET Framework, Silverlight, .NET for Windows Store apps, Windows Phone, e Xbox 360.

Projetos PCL possuem prós e contras, como qualquer tecnologia. O principal ponto positivo de se utilizar a PCL, é poder aproveitar a mesma DLL multi plataforma, bastando apenas adiciona-la como referência nos projetos Windows 8 e Windows Phone 8.

Já como o principal contra da PCL, é que ela disponibiliza somente as classes que realmente são multi plataforma, deixando a PCL um pouco limitada do ponto de vista de conjunto de componentes.

 

Definindo a Arquitetura de Software das aplicações:

Para criarmos uma mesma aplicação para Windows 8 e Windows Phone 8, devemos primeiramente identificar os itens comuns entre elas.

Sabemos que as telas dos dispositivos Windows 8 são bem diferentes dos dispositivos Windows Phone 8.

Windows Phone 8
image
 
Windows 8
image

Resoluções: 800×480, 1280×720, 1280×768

Modos: Portrait, Landscape

Resoluções: 1024×768+

Modos: Landscape, Portrait, Snapped, Filled

 

Desta forma, o código feito para a tela da aplicação (View), não poderá ser reaproveitado entre as plataformas por alguns motivos, como:

  • Espaço da tela
  • Orientação da tela e Page Layout
  • XAML Namespaces
    • Windows.UI.Xaml.Controls contém os controles Windows 8
    • Microsoft.Phone.Controls e Microsoft.Phone.Shell contém os controles Windows Phone
    • System.Windows.Controls também contém controles Windows 8, mas contém controles compartilhados entre as plataformas
  • Controles XAML diferentes

Mais informações sobre este assunto, você encontra aqui.

Já a lógica das aplicações será a mesma. Vamos utilizar a PCL para encapsular nosso Model e nosso ViewModel em uma única DLL multi plataforma.

Então, do ponto de vista de arquitetura de software, nossas aplicações compatilharão uma mesma PCL.

 

image

 

Criando a Portable Class Library PCL:

Uma vez o projeto PCL compilado, você terá uma DLL. Esta DLL será adicionada como referência ao seu projeto de Windows 8 e Windows Phone 8.

Para criar a PCL, abra o Visual Studio 2012 (Professional ou superior) e selecione o Portable Class Library project em C# ou VB.NET:

image

 

Uma vez selecionado o projeto do tipo PCL, devemos escolher com quais plataformas esta DLL será compatível:

 

image

* IMPORTANTE: Para aparecer a opção de Windows Phone 8, você precisa instalar o Windows Phone 8 SDK

Pronto, sua PCL esta criada. Podemos ver que a única referência que existe neste projeto é um sub conjunto do .Net, chamado de .NET Portable Subset

image

 

Bom, em um próximo post vou continuar este projeto, e adicionar a esta PCL nosso Model e o ViewModel para ser compartilhado com as aplicações Windows 8 e Windows Phone 8. Fiquem ligados aqui no blog e no meu twitter http://twitter.com/daibert

Abraços,

@daibert

Outras referências para você conhecer melhor do assunto estão nos links no post http://aka.ms/SharedCodeDicas

Anúncios