Partilhar via


Mudar do Windows Runtime 8.x para a UWP

Se você tiver um aplicativo Universal 8.1, seja ele direcionado ao Windows 8.1, Windows Phone 8.1 ou ambos, descobrirá que seu código-fonte e suas habilidades serão portados sem problemas 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 Guia para aplicativos UWP.

Durante a portabilidade, você descobrirá que o Windows 10 compartilha a maioria das APIs com as plataformas anteriores, bem como marcação XAML, estrutura de interface do usuário e ferramentas, e você achará tudo isso tranquilizadoramente familiar. Assim como antes, você ainda pode escolher entre C++, C# e Visual Basic para a linguagem de programação usar junto com a estrutura de interface do usuário XAML. Seus primeiros passos no planejamento exato do que fazer com seu aplicativo ou aplicativos atuais dependerão dos tipos de aplicativos e projetos que você possui. Isso é explicado nas seções a seguir.

Se você tiver um app Universal 8.1

Um aplicativo Universal 8.1 é criado a partir de um projeto de Aplicativo Universal 8.1. Digamos que o nome do projeto seja AppName_81. Ele contém esses subprojetos.

  • AppName_81. Windows. Este é o projeto que cria o pacote do aplicativo para Windows 8.1.
  • AppName_81. WindowsPhone. Este é o projeto que cria o pacote do aplicativo para Windows Phone 8.1.
  • AppName_81. Compartilhado. Este é o projeto que contém código-fonte, arquivos de marcação e outros ativos e recursos que são usados por ambos os outros dois projetos.

Muitas vezes, um aplicativo Universal do Windows 8.1 oferece os mesmos recursos — e faz isso usando o mesmo código e marcação — em seus formulários Windows 8.1 e Windows Phone 8.1. Um aplicativo como esse é um candidato ideal para portabilidade para um único aplicativo do Windows 10 direcionado à família de dispositivos Universal (e que você pode instalar na mais ampla variedade de dispositivos). Essencialmente, você portará o conteúdo do projeto compartilhado e precisará usar pouco ou nada dos outros dois projetos, pois haverá pouco ou nada neles.

Outras vezes, o Windows 8.1 e/ou o Windows Phone 8.1 Ou eles contêm os mesmos recursos, mas implementam esses recursos usando técnicas diferentes ou tecnologia diferente. Com um aplicativo como esse, você pode optar por portá-lo para um único aplicativo direcionado à família de dispositivos Universal (nesse caso, você desejará que o aplicativo se adapte a diferentes dispositivos) ou pode optar por portá-lo como mais de um aplicativo, talvez um direcionado à família de dispositivos Desktop e outro direcionado à família de dispositivos móveis. A natureza do aplicativo Universal 8.1 determinará qual dessas opções é melhor para o seu caso.

  1. Portar o conteúdo do projeto compartilhado para um aplicativo direcionado à família de dispositivos Universal. Se aplicável, recupere qualquer outro conteúdo dos projetos do Windows e do Windows Phone e use esse conteúdo incondicionalmente no aplicativo ou condicionalmente ao dispositivo em que seu aplicativo está sendo executado no momento (o último comportamento é conhecido como adaptativo).
  2. Portar o conteúdo do projeto do Windows Phone para um aplicativo direcionado à família de dispositivos Universal. Se aplicável, recupere qualquer outro conteúdo do projeto do Windows, usando-o incondicionalmente ou de forma adaptativa.
  3. Portar o conteúdo do projeto do Windows para um aplicativo direcionado à família de dispositivos Universal. Se aplicável, recupere qualquer outro conteúdo do projeto do WindowsPhone, usando-o incondicionalmente ou de forma adaptativa.
  4. Portar o conteúdo do projeto do Windows para um aplicativo direcionado à família de dispositivos Universal ou Desktop e também portar o conteúdo do projeto do Windows Phone para um aplicativo direcionado à família de dispositivos Universal ou Móvel. Você pode criar uma solução com um projeto compartilhado e continuar a compartilhar código-fonte, arquivos de marcação e outros ativos e recursos entre os dois projetos. Ou você pode criar soluções diferentes e ainda compartilhar os mesmos itens usando links.

Se você tiver um aplicativo do Windows 8.1

Faça a portabilidade do projeto para um aplicativo direcionado à família de dispositivos Universal ou Desktop. Se você escolher a família de dispositivos Universal e seu aplicativo chamar APIs implementadas apenas na família de dispositivos Desktop, poderá proteger essas chamadas com código adaptável.

Se você tiver um aplicativo do Windows Phone 8.1

Faça a portabilidade do projeto para um aplicativo direcionado à família de dispositivos Universal ou Mobile. Se você escolher a família de dispositivos Universal e seu aplicativo chamar APIs implementadas apenas na família de dispositivos móveis, você poderá proteger essas chamadas com código adaptável.

Adaptando seu aplicativo a vários fatores forma

A opção escolhida nas seções anteriores determinará a variedade 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 tem uma ampla variedade de tamanhos de tela para dar suporte. Portanto, se seu aplicativo estiver sendo executado em fatores forma aos quais não dava suporte 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á alguns exemplos disso na prática nos estudos de caso Bookstore2 e QuizGame.

Abordando a portabilidade camada por camada

Ao portar um aplicativo Universal 8.1 para o modelo de aplicativos UWP, praticamente todo o seu conhecimento e experiência serão transferidos, assim como a maior parte do código-fonte e da marcação e dos padrões de software que você usa.

  • 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, a marcação e o 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 não visual e do .NET Framework (incluindo APIs para acesso a dados). E essas APIs também estão disponíveis para aplicativos UWP, portanto, a maioria, se não todo esse código, será portado sem alterações.
  • 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 seu aplicativo pode chamar para serviços que variam de 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 em camadas como as descritas acima torna mais fácil para você corrigi-lo, testá-lo e, posteriormente, lê-lo e mantê-lo. Você pode tornar a funcionalidade mais reutilizável 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.

Tópico Descrição
Portabilidade do projeto Você tem duas opções ao iniciar o processo de portabilidade. Uma delas é editar uma cópia dos arquivos de projeto existentes, incluindo o manifesto do pacote do aplicativo (para essa opção, consulte as informações sobre como atualizar seus arquivos de projeto em Migrar aplicativos para a Plataforma Universal do Windows (UWP)). A outra opção é criar um novo projeto do Windows 10/11 no Visual Studio e copiar 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 extremamente bem de aplicativos Universal 8.1 para aplicativos UWP. Você descobrirá que a maior parte da sua marcação é compatível, embora talvez seja necessário fazer alguns ajustes nas chaves de recursos do sistema ou nos modelos personalizados que você está usando.
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.
Estudo de caso: Livraria1 Este tópico apresenta um estudo de caso de portabilidade de um aplicativo Universal 8.1 muito simples para um aplicativo UWP do Windows 10 e do Windows 11. Um aplicativo Universal 8.1 é aquele que cria um pacote de aplicativos para Windows 8.1 e um pacote de aplicativos diferente para Windows Phone 8.1. Com o Windows 10 e o Windows 11, 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. Consulte Guia para aplicativos UWP.
Estudo de caso: Bookstore2 Este estudo de caso, que se baseia nas informações fornecidas no controle SemanticZoom . No modelo de exibição, cada instância da classe Author representa o grupo de livros escritos por esse autor e, no SemanticZoom, podemos exibir a lista de livros agrupados por autor ou diminuir o zoom para ver uma lista de atalhos de autores.
Estudo de caso: QuizGame Este tópico apresenta um estudo de caso de portabilidade de um aplicativo de exemplo WinRT 8.1 de jogo de teste ponto a ponto em funcionamento para um aplicativo UWP do Windows 10 e Windows 11.

Documentação