Mudar do Windows Phone Silverlight para a UWP
Se você for um desenvolvedor com um aplicativo Windows Phone Silverlight, poderá fazer excelente uso de seu conjunto de habilidades e seu código-fonte na mudança para o Windows 10. Com o Windows 10, você pode criar um aplicativo UWP (Plataforma Universal do Windows), que é um único pacote de aplicativos que seus clientes podem instalar em todos os tipos de dispositivos. Para obter mais informações sobre Windows 10, aplicativos UWP e os conceitos de código adaptável e interface do usuário adaptável que mencionaremos neste guia de portabilidade, consulte o Guia para aplicativos UWP (Plataforma Universal do Windows).
Ao portar seu aplicativo do Windows Phone Silverlight para um aplicativo do Windows 10, você poderá acompanhar os recursos móveis que foram introduzidos no Windows Phone 8.1 e ir muito além deles para usar a Plataforma Universal do Windows (UWP), cujo modelo de aplicativo e estrutura de interface do usuário são universais em todos os dispositivos Windows 10. Isso possibilita o suporte a PCs, tablets, telefones e um grande número de outros tipos de dispositivos, a partir de uma base de código e com um pacote de aplicativos. E isso multiplicará o público potencial do seu aplicativo e criará novas possibilidades com dados compartilhados, consumíveis comprados e assim por diante. Para obter mais informações sobre novos recursos, consulte Novidades para desenvolvedores no Windows 10.
Se você escolher, a versão do Windows Phone Silverlight do seu aplicativo e a versão do Windows 10 poderão estar disponíveis para os clientes ao mesmo tempo.
Observação Este guia foi criado para ajudá-lo a portar seu aplicativo Windows Phone Silverlight para o Windows 10 manualmente. Além de usar as informações deste guia para portar seu aplicativo, você pode experimentar a visualização do desenvolvedor do Silverlight Bridge do Mobilize.NET para ajudar a automatizar o processo de portabilidade. Essa ferramenta analisa o código-fonte do aplicativo e converte referências a controles e APIs do Windows Phone Silverlight em seus equivalentes UWP. Como essa ferramenta ainda está em visualização do desenvolvedor, ela ainda não lida com todos os cenários de conversão. No entanto, a maioria dos desenvolvedores deve economizar tempo e esforço começando com essa ferramenta. Para experimentar a visualização do desenvolvedor, visite o site do Mobilize.NET.
XAML e .NET ou HTML?
O Windows Phone Silverlight tem uma estrutura de interface do usuário XAML baseada no Silverlight 4.0 e você programa em uma versão do .NET Framework e em um pequeno subconjunto de APIs do Tempo de Execução do Windows. Como você usou XAML (Extensible Application Markup Language) em seu aplicativo Windows Phone Silverlight, é provável que o XAML seja sua escolha para sua versão do Windows 10, pois a maior parte do seu conhecimento e experiência serão transferidos, assim como grande parte do código-fonte e dos padrões de software que você usa. Até mesmo a marcação e o design da interface do usuário podem ser transferidos prontamente. Você encontrará as APIs gerenciadas, a marcação XAML, a estrutura da interface do usuário e as ferramentas muito familiares, e poderá usar C++, C# ou Visual Basic junto com XAML em um aplicativo UWP. Você pode se surpreender com a facilidade do processo, mesmo que haja um ou dois desafios ao longo do caminho.
Consulte Roteiro para aplicativos da Plataforma Universal do Windows (UWP) usando C# ou Visual Basic.
Observação O Windows 10 dá suporte a muito mais do .NET Framework do que um aplicativo da Loja do Windows Phone. Por exemplo, o Windows 10 tem vários namespaces System.ServiceModel.*, bem como System.Net, System.Net.NetworkInformation e System.Net.Sockets. Portanto, agora é um ótimo momento para portar seu Windows Phone Silverlight e fazer com que seu código .NET seja compilado e funcione na nova plataforma. Consulte Mapeamentos de namespace e classe. Outro grande motivo para recompilar seu código-fonte .NET existente em um aplicativo do Windows 10 é que você se beneficiará do .NET Native, que é uma tecnologia de compilação antecipada que converte o MSIL em código de máquina executável nativamente. Aplicativos .NET Native iniciam com mais rapidez, usam menos memória e bateria do que seus equivalentes MSIL.
Este guia de portabilidade se concentrará em XAML, mas, como alternativa, você pode criar um aplicativo funcionalmente equivalente, chamando muitas das mesmas APIs do Tempo de Execução do Windows, usando JavaScript, CSS (Folhas de Estilos em Cascata) e HTML5 junto com a Biblioteca do Windows para JavaScript. Embora as estruturas de interface do usuário do Tempo de Execução do Windows de XAML e HTML sejam diferentes umas das outras, qualquer uma que você escolher funcionará universalmente em toda a gama de dispositivos Windows.
Direcionamento da família de dispositivos móveis ou universal
Uma opção que você tem é portar seu aplicativo para um aplicativo direcionado à família de dispositivos universal. Nesse caso, o aplicativo pode ser instalado na mais ampla gama de dispositivos. Se o aplicativo chamar APIs implementadas apenas na família de dispositivos móveis, você poderá proteger essas chamadas com código adaptável. Como alternativa, você pode optar por portar seu aplicativo para um aplicativo direcionado à família de dispositivos móveis e, nesse caso, não é necessário escrever código adaptável.
Adaptando seu aplicativo a vários fatores forma
A opção escolhida na seção anterior determinará o intervalo de dispositivos em que seu aplicativo ou aplicativos serão executados, e isso pode ser uma variedade muito ampla de dispositivos. Mesmo limitando seu aplicativo à família de dispositivos móveis, você ainda terá uma ampla variedade de tamanhos de tela para suportar. Portanto, como seu aplicativo será executado em fatores forma que não eram compatíveis anteriormente, teste sua interface do usuário nesses fatores forma e faça as alterações necessárias para que sua interface do usuário se adapte adequadamente a cada um. Você pode pensar que isso é uma tarefa pós-portabilidade ou uma meta estendida de portabilidade, e há um exemplo disso na prática no estudo de caso Bookstore2.
Abordando a portabilidade camada por camada
- Visualizar. A exibição (juntamente com o modelo de exibição) compõe a interface do usuário do seu aplicativo. Idealmente, a exibição consiste em marcação associada a propriedades observáveis de um modelo de exibição. Outro padrão (comum e conveniente, mas apenas a curto prazo) é o código imperativo em um arquivo code-behind para manipular diretamente os elementos da interface do usuário. Em ambos os casos, grande parte da marcação e do design da interface do usuário - e até mesmo o código imperativo que manipula elementos da interface do usuário - serão fáceis de portar.
- Exibir modelos e modelos de dados. Mesmo que você não adote formalmente os padrões de separação de preocupações (como o MVVM), inevitavelmente há um código presente em seu aplicativo que executa a função de modelo de exibição e modelo de dados. O código do modelo de exibição usa tipos nos namespaces da estrutura da interface do usuário. O modelo de exibição e o código do modelo de dados também usam APIs do sistema operacional e do .NET não visuais (incluindo APIs para acesso a dados). E a grande maioria deles está disponível para um aplicativo UWP, portanto, você pode esperar ser capaz de portar grande parte desse código sem alterações. Lembre-se, porém: um modelo de exibição é um modelo, ou abstração, de uma exibição. Um modelo de exibição fornece o estado e o comportamento da interface do usuário, enquanto a própria exibição fornece os visuais. Por esse motivo, qualquer interface do usuário que você adaptar aos diferentes fatores forma nos quais a UWP permite que você execute provavelmente precisará de alterações de modelo de exibição correspondentes. Para serviços de nuvem de rede e chamada, você normalmente tem a opção entre usar APIs do .NET ou do Tempo de Execução do Windows. Para obter os fatores envolvidos na tomada dessa decisão, consulte Serviços de nuvem, rede e bancos de dados.
- Serviços de nuvem. É provável que alguns de seus aplicativos (talvez uma grande parte deles) sejam executados na nuvem na forma de serviços. A parte do aplicativo em execução no dispositivo cliente se conecta a eles. Essa é a parte de um aplicativo distribuído com maior probabilidade de permanecer inalterada ao portar a parte do cliente. Se você ainda não tiver um, uma boa opção de serviços de nuvem para seu aplicativo UWP são os Serviços Móveis do Microsoft Azure, que fornecem componentes de back-end poderosos que os aplicativos universais do Windows podem chamar para serviços que vão desde notificações simples para atualizações de blocos dinâmicos até o tipo de escalabilidade pesada que um farm de servidores pode fornecer.
Antes ou durante a portabilidade, considere se seu aplicativo pode ser melhorado refatorando-o para que o código com uma finalidade semelhante seja reunido em camadas e não espalhado arbitrariamente. Fatorar seu aplicativo UWP em camadas como as descritas acima torna mais fácil para você corrigir seu aplicativo, testá-lo e, posteriormente, lê-lo e mantê-lo. Você pode tornar a funcionalidade mais reutilizável e evitar alguns problemas de diferenças de API de interface do usuário entre plataformas seguindo o padrão MVVM (Model-View-ViewModel). Esse padrão mantém os dados, os negócios e as partes da interface do usuário do seu aplicativo separados uns dos outros. Mesmo dentro da interface do usuário, ele pode manter o estado e o comportamento separados e testáveis separadamente dos visuais. Com o MVVM, você pode escrever seus dados e lógica de negócios uma vez e usá-los em todos os dispositivos, independentemente da interface do usuário. É provável que você também consiga reutilizar grande parte do modelo de exibição e exibir partes em todos os dispositivos.
Uma ou duas exceções à regra
Ao ler este guia de portabilidade, você pode consultar Mapeamentos de namespace e classe. O mapeamento bastante simples é a regra geral, e a tabela de mapeamentos de namespace e classe descreve todas as exceções.
No nível do recurso, a boa notícia é que há muito pouco que não é suportado na UWP. A maior parte do seu conjunto de habilidades e código-fonte se traduz muito bem em aplicativos UWP, como você lerá no restante deste guia de portabilidade. Mas, aqui estão os poucos recursos do Windows Phone Silverlight que você pode ter usado para os quais não há equivalente UWP.
Recurso para o qual não há equivalente UWP | Documentação do Windows Phone Silverlight para o recurso |
---|---|
Microsoft XNA. Em geral, o Microsoft DirectX usando C++ é o substituto. Consulte Desenvolvendo jogos e interoperabilidade DirectX e XAML. | Biblioteca de classes do XNA Framework |
Aplicativos de lente | Lentes para Windows Phone 8 |
Tópico | Descrição |
---|---|
Mapeamentos de namespace e de classe | Este tópico fornece um mapeamento abrangente das APIs do Windows Phone Silverlight para seus equivalentes UWP. |
Portabilidade do projeto | Você inicia o processo de portabilidade criando um novo projeto do Windows 10 no Visual Studio e copiando seus arquivos para ele. |
Solução de problemas | É altamente recomendável ler até o final deste guia de portabilidade, mas também entendemos que você está ansioso para seguir em frente e chegar ao estágio em que seu projeto é compilado e executado. Para esse fim, você pode fazer progressos temporários comentando ou eliminando qualquer código não essencial e, em seguida, retornando para pagar essa dívida mais tarde. A tabela de solução de problemas de sintomas e soluções neste tópico pode ser útil para você neste estágio, embora não substitua a leitura dos próximos tópicos. Você sempre pode consultar a tabela à medida que avança nos tópicos posteriores. |
Portar XAML e a interface do usuário | A prática de definir a interface do usuário na forma de marcação XAML declarativa se traduz muito bem do Windows Phone Silverlight para aplicativos UWP. Você descobrirá que grandes seções de sua marcação são compatíveis depois de atualizar as referências de chave de recurso do sistema, alterar alguns nomes de tipo de elemento e alterar "clr-namespace" para "using". |
Portabilidade para E/S, dispositivo e modelo de aplicativo | O código que se integra ao próprio dispositivo e seus sensores envolve entrada e saída para o usuário. Também pode envolver o processamento de dados. No entanto, esse código geralmente não é considerado como a camada de interface do usuário ou a camada de dados. Este código inclui integração com o controlador de vibração, acelerômetro, giroscópio, microfone e alto-falante (que se cruzam com reconhecimento e síntese de fala), (geo)localização e modalidades de entrada, como toque, mouse, teclado e caneta. |
Portabilidade de camadas de negócios e dados | Por trás de sua interface do usuário estão suas camadas de negócios e dados. O código nessas camadas chama APIs do sistema operacional e do .NET Framework (por exemplo, processamento em segundo plano, localização, câmera, sistema de arquivos, rede e outros acessos a dados). A grande maioria deles está disponível para um aplicativo UWP, portanto, você pode esperar ser capaz de portar grande parte desse código sem alterações. |
Portabilidade para fator forma e UX | Os aplicativos do Windows compartilham uma aparência comum em computadores, dispositivos móveis e muitos outros tipos de dispositivos. Os padrões da interface do usuário, de entrada e de interação são muito semelhantes, e um usuário que alterne entre dispositivos ficará contente com a experiência familiar. |
Estudo de caso: Livraria1 | Este tópico apresenta um estudo de caso de portabilidade de um aplicativo muito simples do Windows Phone Silverlight para um aplicativo UWP do Windows 10. Com o Windows 10, você pode criar um único pacote de aplicativos que seus clientes podem instalar em uma ampla variedade de dispositivos, e é isso que faremos neste estudo de caso. |
Estudo de caso: Bookstore2 | Este estudo de caso, que se baseia nas informações fornecidas em Bookstore1, começa com um aplicativo do Windows Phone Silverlight que exibe dados agrupados em um LongListSelector. No modelo de exibição, cada instância da classe Author representa o grupo de livros escritos por esse autor e, no LongListSelector, podemos exibir a lista de livros agrupados por autor ou podemos diminuir o zoom para ver uma lista de atalhos de autores. |
Tópicos relacionados
Documentação
- Novidades para desenvolvedores no Windows 10
- Guia para aplicativos da Plataforma Universal do Windows (UWP)
- Roteiro para aplicativos da Plataforma Universal do Windows (UWP) usando C# ou Visual Basic
- O que vem a seguir para os desenvolvedores do Windows Phone 8
Artigos de revistas
Apresentações
- A história de trazer o Nokia Music do Windows Phone para o Windows 8