Compartir a través de


Pasar de Windows Runtime 8.x a UWP

Si tienes una aplicación Universal 8.1 ,ya sea que tenga como destino Windows 8.1, Windows Phone 8.1 o ambos, verás que el código fuente y las aptitudes se migrarán sin problemas a Windows 10. Con Windows 10, puedes crear una aplicación para la Plataforma universal de Windows (UWP), que es un único paquete de aplicación que los clientes pueden instalar en cada tipo de dispositivo. Para obtener más información sobre Windows 10, las aplicaciones para UWP y los conceptos de código adaptable y la interfaz de usuario adaptable que mencionaremos en esta guía de portabilidad, consulta Guía de aplicaciones para UWP.

Durante la migración, encontrarás que Windows 10 comparte la mayoría de las APIs con las plataformas anteriores, así como el marcado XAML, el marco de interfaz de usuario y las herramientas, y descubrirás que todo resulta reconfortantemente familiar. Al igual que antes, todavía puedes elegir entre C++, C# y Visual Basic para que el lenguaje de programación lo use junto con el marco de interfaz de usuario XAML. Los primeros pasos para planear exactamente qué hacer con la aplicación o las aplicaciones actuales dependerán de los tipos de aplicaciones y proyectos que tenga. Esto se explica en las secciones siguientes.

Si tiene una aplicación 8.1 universal

Una aplicación universal 8.1 se compila a partir de un proyecto de aplicación universal 8.1. Supongamos que el nombre del proyecto es AppName_81. Contiene estos subproyectos.

  • AppName_81.Windows. Este es el proyecto que compila el paquete de la aplicación para Windows 8.1.
  • AppName_81.WindowsPhone. Este es el proyecto que compila el paquete de la aplicación para Windows Phone 8.1.
  • AppName_81.Shared. Este es el proyecto que contiene el código fuente, archivos de marcado y otros activos y recursos que utilizan los otros dos proyectos.

A menudo, una aplicación universal de Windows 8.1 ofrece las mismas características y lo hace con el mismo código y marcado, tanto en sus formularios de Windows 8.1 como de Windows Phone 8.1. Una aplicación como esa es una candidata ideal para migrar a una sola aplicación de Windows 10 que tiene como destino la familia de dispositivos universales (y que puedes instalar en la gama más amplia de dispositivos). Básicamente, trasladará el contenido del proyecto compartido y necesitará usar poco o nada de los otros dos proyectos, ya que contienen poco o nada.

Otras veces, el formato de Windows 8.1 y/o el de Windows Phone 8.1 de la aplicación contiene características únicas. O contienen las mismas características, pero implementan esas características mediante diferentes técnicas o tecnología diferente. Con una aplicación como esta, puedes elegir portarla a una sola aplicación que tenga como destino la familia de dispositivos universales (en cuyo caso querrás que la aplicación se adapte a diferentes dispositivos), o puedes elegir portarla como más de una aplicación, quizás una destinada a la familia de dispositivos de escritorio y otra dirigida a la familia de dispositivos móviles. La naturaleza de la aplicación Universal 8.1 determinará cuál de estas opciones es la mejor para su caso.

  1. Porte el contenido del proyecto Compartido a una aplicación destinada a la familia de dispositivos universales. Si procede, recupera cualquier otro contenido de los proyectos de Windows y WindowsPhone, y ese contenido será usado bien de forma incondicional en la aplicación o de forma condicional en función del dispositivo en el que la aplicación se está ejecutando en ese momento exacto (este último comportamiento se conoce como adaptable).
  2. Portar el contenido del proyecto de WindowsPhone a una aplicación destinada a la familia de dispositivos universales. Si procede, salva cualquier otro contenido del proyecto de Windows, usándolo de forma incondicional o adaptable.
  3. Porte el contenido del proyecto de Windows a una aplicación destinada a la familia de dispositivos universales. Si procede, salva cualquier otro contenido del proyecto de WindowsPhone, usándolo de forma incondicional o adaptable.
  4. Porte el contenido del proyecto de Windows a una aplicación destinada a la familia de dispositivos universal o de escritorio, y también porte el contenido del proyecto de WindowsPhone a una aplicación destinada a la familia de dispositivos universal o móvil. Puede crear una solución con un proyecto compartido y seguir compartiendo código fuente, archivos de marcado y otros recursos y recursos entre los dos proyectos. O bien, puede crear soluciones diferentes y compartir los mismos elementos mediante vínculos.

Si tienes una aplicación de Windows 8.1

Portar el proyecto a una aplicación que tenga como destino la familia de dispositivos universal o de escritorio. Si eliges la familia de dispositivos universales y la aplicación llama a las API que solo se implementan en la familia de dispositivos de escritorio, puedes proteger esas llamadas con código adaptable.

Si tienes una aplicación de Windows Phone 8.1

Portar el proyecto a una aplicación que tenga como destino la familia de dispositivos universales o móviles. Si eliges la familia de dispositivos universales y la aplicación llama a las API que solo se implementan en la familia de dispositivos móviles, puedes proteger esas llamadas con código adaptable.

Adaptación de tu aplicación a múltiples factores de forma

La opción que elija entre las secciones anteriores determinará el intervalo de dispositivos en los que se ejecutará la aplicación o las aplicaciones, y que puede ser una gama muy amplia de dispositivos. Incluso limitar la aplicación a la familia de dispositivos móviles le deja todavía una amplia gama de tamaños de pantalla para admitir. Por lo tanto, si la aplicación se ejecutará en factores de forma que no admitía anteriormente, pruebe la interfaz de usuario en esos factores de forma y realice cualquier cambio necesario, de modo que la interfaz de usuario se adapte adecuadamente en cada uno. Puedes pensar que se trata de una tarea posterior a la migración, o un objetivo adicional de portabilidad, y hay algunos ejemplos de ello en la práctica en los casos prácticos de Bookstore2 y QuizGame.

Aproximación a la portabilidad capa por capa

Al migrar una aplicación universal 8.1 al modelo para aplicaciones para UWP, prácticamente todos tus conocimientos y experiencia se transferirán, como lo hará la mayoría del código fuente y el marcado y los patrones de software que usas.

  • Vista. La vista (junto con el modelo de vista) compone la interfaz de usuario de la aplicación. Idealmente, la vista consta de marcado enlazado a propiedades observables de un modelo de vista. Otro patrón (común y conveniente, pero solo en el corto plazo) es para el código imperativo en un archivo de código subyacente para manipular directamente los elementos de la interfaz de usuario. En cualquier caso, el marcado y el diseño de la interfaz de usuario, e incluso el código imperativo que manipula los elementos de la interfaz de usuario, será sencillo de migrar.
  • Ver modelos y modelos de datos. Incluso si no adopta formalmente patrones de separación de preocupaciones (como MVVM), es inevitable que haya código presente en la aplicación que realiza la función del modelo de vista y del modelo de datos. El código del modelo de vista utiliza tipos en los espacios de nombres del marco de trabajo de la interfaz de usuario. Tanto el modelo de vista como el código del modelo de datos también usan el sistema operativo no visual y las API de .NET Framework (incluidas las API para el acceso a datos). Y esas API están disponibles para aplicaciones para UWP, también, por lo que la mayoría de si no todo este código se portará sin cambios.
  • Servicios en la nube. Es probable que algunas de las aplicaciones (quizás una gran cantidad de ella) se ejecuten en la nube en forma de servicios. La parte de la aplicación que se ejecuta en el dispositivo cliente se conecta a ellas. Esta es la parte de una aplicación distribuida que es más probable que permanezca sin cambios al migrar la parte del cliente. Si aún no tienes una, una buena opción de servicios en la nube para tu aplicación para UWP es Microsoft Azure Mobile Services, que proporciona componentes de back-end eficaces que la aplicación puede llamar a servicios que van desde notificaciones sencillas para actualizaciones de iconos dinámicos hasta el tipo de escalabilidad pesada que puede proporcionar una granja de servidores.

Antes o durante la migración, considere si la aplicación podría mejorarse refactorizando para que el código con un propósito similar se recopile en capas y no se disperse arbitrariamente. La factorización de la aplicación en capas como las descritas anteriormente facilita que la aplicación sea correcta, probarla y, a continuación, leerla y mantenerla. Puede hacer que la funcionalidad sea más reutilizable siguiendo el patrón Model-View-ViewModel (MVVM). Este patrón mantiene los datos, la empresa y las partes de la interfaz de usuario de la aplicación separados entre sí. Incluso dentro de la interfaz de usuario, puede mantener separado el estado y el comportamiento, y hacerlos separadamente comprobables de los elementos visuales. Con MVVM, puede escribir los datos y la lógica de negocios una vez y usarlo en todos los dispositivos independientemente de la interfaz de usuario. Es probable que también pueda volver a usar la mayor parte del modelo de vista y las partes de vista en distintos dispositivos.

Tema Descripción
Migración del proyecto Tiene dos opciones al comenzar el proceso de portabilidad. Una consiste en editar una copia de los archivos de proyecto existentes, incluido el manifiesto del paquete de aplicación (para esa opción, consulta la información sobre cómo actualizar los archivos del proyecto en Migrar aplicaciones a la Plataforma universal de Windows (UWP)). La otra opción es crear un nuevo proyecto de Windows 10/11 en Visual Studio y copiar los archivos en él.
Solución de problemas Recomendamos encarecidamente leer esta guía de portabilidad hasta el final, pero también entendemos que está ansioso por avanzar y llegar a la fase en la que su proyecto se compila y se ejecuta. Para ello, puede realizar un progreso temporal comentando o eliminando temporalmente cualquier código no esencial y luego resolver esa deuda más adelante. La tabla de síntomas y soluciones de problemas de este tema puede resultarle útil en este punto, aunque no sustituye la lectura de los próximos temas. Siempre puedes consultar la tabla mientras avanzas en los temas posteriores.
Portar XAML y la interfaz de usuario La práctica de definir la interfaz de usuario en forma de marcado XAML declarativo se traduce muy bien de aplicaciones universales 8.1 a aplicaciones para UWP. Encontrará que la mayor parte del marcado es compatible, aunque es posible que tenga que realizar algunos ajustes en las claves de recurso del sistema o plantillas personalizadas que esté usando.
Portabilidad de E/S, dispositivos y modelo de aplicación El código que se integra con el propio dispositivo y sus sensores implica interacción de entrada y salida para el usuario. También puede implicar el procesamiento de datos. Sin embargo, este código no suele considerarse como la capa de interfaz de usuario o la capa de datos. Este código incluye la integración con el controlador de vibración, el acelerómetro, el giroscopio, el micrófono y el altavoz (que se intersecan con el reconocimiento de voz y la síntesis), la ubicación (geo)y las modalidades de entrada, como la entrada táctil, el mouse, el teclado y el lápiz.
Caso de estudio: Bookstore1 En este tema se presenta un caso práctico de migrar una aplicación universal 8.1 muy sencilla a una aplicación para UWP de Windows 10 y Windows 11. Una aplicación universal 8.1 es una que compila un paquete de aplicación para Windows 8.1 y un paquete de aplicación diferente para Windows Phone 8.1. Con Windows 10 y Windows 11, puedes crear un único paquete de aplicación que los clientes puedan instalar en una amplia gama de dispositivos y eso es lo que haremos en este caso práctico. Consulta Guía de aplicaciones UWP.
caso práctico : Bookstore2 Este caso práctico, que se basa en la información proporcionada en SemanticZoom control. En el modelo de vista, cada instancia de la clase Author representa a la colección de libros escritos por ese autor, y en SemanticZoom (Zoom semántico), podemos ver la lista de libros agrupados por autor o podemos alejar la vista para ver una lista de autores.
caso práctico : QuizGame En este tema se presenta un caso práctico de portación de un juego de preguntas y respuestas peer-to-peer de ejemplo de WinRT 8.1, a una aplicación UWP para Windows 10 y Windows 11.

Documentación