Compartir a través de


Migración de Windows Phone capas de datos y empresariales de Silverlight a UWP

El tema anterior era Migración de E/S, dispositivo y modelo de aplicación.

Detrás de la interfaz de usuario se encuentran las capas de negocio y de datos. El código de estas capas llama al sistema operativo y a las API de .NET Framework (por ejemplo, procesamiento en segundo plano, ubicación, cámara, sistema de archivos, red y otro acceso a datos). La gran mayoría de ellas están disponibles para una aplicación de Plataforma universal de Windows (UWP), por lo que puedes esperar poder migrar gran parte de este código sin cambios.

Métodos asincrónicos

Una de las prioridades de la Plataforma universal de Windows (UWP) es permitirle crear aplicaciones que sean verdaderamente, y coherentes, con capacidad de respuesta. Las animaciones siempre son suaves, y las interacciones táctiles, como el movimiento panorámico y el deslizamiento, son instantáneas y libres de retraso, lo que hace que se sienta como que la interfaz de usuario está pegada al dedo. Para lograr esto, cualquier API de UWP que no pueda garantizar que se complete en 50 ms se ha hecho asincrónico y su nombre sufijo con Async. El subproceso de la interfaz de usuario devolverá inmediatamente de llamar a un método asincrónico y el trabajo tendrá lugar en otro subproceso. El consumo de un método asincrónico se hace muy fácil, sintácticamente, mediante el operador await de C#, los objetos de promesa de JavaScript y las continuaciones de C++. Para obtener más información, consulta Programación asincrónica.

Procesamiento en segundo plano

Una aplicación Windows Phone Silverlight puede usar un objeto ScheduledTaskAgent administrado para realizar una tarea mientras la aplicación no está en primer plano. Una aplicación para UWP usa la clase BackgroundTaskBuilder para crear y registrar una tarea en segundo plano de forma similar. Defina una clase que implemente el trabajo de la tarea en segundo plano. El sistema ejecuta la tarea en segundo plano periódicamente, llamando al método Run de la clase para ejecutar el trabajo. En una aplicación para UWP, recuerda establecer la declaración Tareas en segundo plano en el manifiesto del paquete de la aplicación. Para obtener más información, consulta Compatibilidad con la aplicación con tareas en segundo plano.

Para transferir archivos de datos de gran tamaño en segundo plano, una aplicación de Windows Phone Silverlight usa la clase BackgroundTransferService . Una aplicación para UWP usa las API en el espacio de nombres Windows.Networking.BackgroundTransfer para hacerlo. Las características usan un patrón similar para iniciar transferencias, pero la nueva API ha mejorado las funcionalidades y el rendimiento. Para obtener más información, consulta Transferencia de datos en segundo plano.

Una aplicación de Windows Phone Silverlight usa las clases administradas en el espacio de nombres Microsoft.Phone.BackgroundAudio para reproducir audio mientras la aplicación no está en primer plano. La UWP usa el modelo de aplicación Windows Phone Store, consulta Audio en segundo plano y el ejemplo de audio en segundo plano.

Servicios en la nube, redes y bases de datos

El hospedaje de datos y servicios de aplicaciones en la nube es posible mediante Azure. Consulte Introducción a Mobile Services. Para ver las soluciones que requieren datos en línea y sin conexión, consulte: Uso de la sincronización de datos sin conexión en Mobile Services.

La UWP tiene compatibilidad parcial con la clase System.Net.HttpWebRequest , pero no se admite la clase System.Net.WebClient . La alternativa recomendada y orientada al futuro es la clase Windows.Web.Http.HttpClient (o System.Net.Http.HttpClient si necesita que el código sea portátil para otras plataformas que admitan .NET). Estas API usan System.Net.Http.HttpRequestMessage para representar una solicitud HTTP.

Las aplicaciones para UWP no incluyen actualmente compatibilidad integrada con escenarios de uso intensivo de datos, como escenarios de línea de negocio (LOB). Sin embargo, puede usar SQLite para los servicios de base de datos transaccionales locales. Para obtener más información, consulta SQLite.

Pase los URI absolutos, no los URI relativos, a los tipos de Windows Runtime. Consulta Pasar un URI a Windows Runtime.

Selectores y selectores

Con selectores y selectores (que se encuentran en el espacio de nombres Microsoft.Phone.Tasks ), una aplicación de Windows Phone Silverlight puede interactuar con el sistema operativo para realizar operaciones comunes, como redactar un correo electrónico, elegir una foto o compartir determinados tipos de datos con otra aplicación. Busque Microsoft.Phone.Tasks en el tema Windows Phone Silverlight al espacio de nombres de Windows 10 y las asignaciones de clases para buscar el tipo de UWP equivalente. Estos van desde mecanismos similares, denominados iniciadores y selectores, a la implementación de un contrato para compartir datos entre aplicaciones.

Una aplicación de Windows Phone Silverlight se puede colocar en un estado inactivo o incluso se puede colocar en el lápiz cuando se usa, por ejemplo, la tarea Selector de fotos. Una aplicación para UWP permanece activa y en ejecución mientras se usa la clase FileOpenPicker.

Monetización (modo de prueba y compras desde la aplicación)

Una aplicación Windows Phone Silverlight puede usar la clase CurrentApp para UWP para la mayoría de sus funcionalidades de compra en la aplicación y modo de prueba, de modo que no sea necesario migrar el código. Sin embargo, una aplicación de Windows Phone Silverlight llama a MarketplaceDetailTask.Show para ofrecer la aplicación para su compra:

    private void Buy()
    {
        MarketplaceDetailTask marketplaceDetailTask = new MarketplaceDetailTask();
        marketplaceDetailTask.ContentType = MarketplaceContentType.Applications;
        marketplaceDetailTask.Show();
    }

Portar ese código para llamar al método RequestAppPurchaseAsync de UWP:

    private async void Buy()
    {
        await Windows.ApplicationModel.Store.CurrentApp.RequestAppPurchaseAsync(false);
    }

Si tiene código que simula la compra de la aplicación y las características de compra desde la aplicación con fines de prueba, puede migrarlo para usar la clase CurrentAppSimulator en su lugar.

Notificaciones para actualizaciones del icono o del sistema

Las notificaciones son una extensión del modelo de notificaciones push para Windows Phone aplicaciones de Silverlight. Cuando reciba una notificación del Servicio de notificaciones push de Windows (WNS), puede exponer la información a la interfaz de usuario con una actualización de icono o con una notificación del sistema. Para migrar el lado de la interfaz de usuario de las características de notificación, consulte Iconos y notificaciones del sistema.

Para obtener más información sobre el uso de notificaciones en una aplicación para UWP, consulta Envío de notificaciones del sistema.

Para obtener información y tutoriales sobre el uso de iconos, notificaciones del sistema, distintivos, banners y notificaciones en una aplicación de Windows Runtime mediante C++, C# o Visual Basic, consulta Trabajar con iconos, distintivos y notificaciones del sistema.

Almacenamiento (acceso a archivos)

Windows Phone código de Silverlight que almacena la configuración de la aplicación como pares clave-valor en el almacenamiento aislado se portabilidad fácilmente. Este es un ejemplo anterior y posterior, primero la versión de Windows Phone Silverlight:

    var propertySet = IsolatedStorageSettings.ApplicationSettings;
    const string key = "favoriteAuthor";
    propertySet[key] = "Charles Dickens";
    propertySet.Save();
    string myFavoriteAuthor = propertySet.Contains(key) ? (string)propertySet[key] : "<none>";

Y el equivalente de UWP:

    var propertySet = Windows.Storage.ApplicationData.Current.LocalSettings.Values;
    const string key = "favoriteAuthor";
    propertySet[key] = "Charles Dickens";
    string myFavoriteAuthor = propertySet.ContainsKey(key) ? (string)propertySet[key] : "<none>";

Aunque hay disponible un subconjunto del espacio de nombres Windows.Storage , muchas aplicaciones de Silverlight Windows Phone realizan e/s de archivos con la clase IsolatedStorageFile porque se ha admitido durante más tiempo. Suponiendo que se usa IsolatedStorageFile , este es un ejemplo anterior y posterior de escritura y lectura de un archivo, primero la versión de Windows Phone Silverlight:

    const string filename = "FavoriteAuthor.txt";
    using (var store = IsolatedStorageFile.GetUserStoreForApplication())
    {
        using (var streamWriter = new StreamWriter(store.CreateFile(filename)))
        {
            streamWriter.Write("Charles Dickens");
        }
        using (var StreamReader = new StreamReader(store.OpenFile(filename, FileMode.Open, FileAccess.Read)))
        {
            string myFavoriteAuthor = StreamReader.ReadToEnd();
        }
    }

Y la misma funcionalidad con UWP:

    const string filename = "FavoriteAuthor.txt";
    var store = Windows.Storage.ApplicationData.Current.LocalFolder;
    Windows.Storage.StorageFile file = await store.CreateFileAsync(filename, Windows.Storage.CreationCollisionOption.ReplaceExisting);
    await Windows.Storage.FileIO.WriteTextAsync(file, "Charles Dickens");
    file = await store.GetFileAsync(filename);
    string myFavoriteAuthor = await Windows.Storage.FileIO.ReadTextAsync(file);

Una aplicación Windows Phone Silverlight tiene acceso de solo lectura a la tarjeta SD opcional. Una aplicación para UWP tiene acceso de lectura y escritura a la tarjeta SD. Para obtener más información, consulta Acceder a la tarjeta SD.

Para obtener información sobre cómo obtener acceso a archivos de fotos, música y vídeos en una aplicación para UWP, consulta Archivos y carpetas en las bibliotecas Música, Imágenes y Vídeos.

Para obtener más información, consulta Archivos, carpetas y bibliotecas.

El tema siguiente es Migración para factor de forma y experiencia de usuario.