Porting Windows Phone bisnis Silverlight dan lapisan data ke UWP

Topik sebelumnya adalah Porting untuk I /O, perangkat, dan model aplikasi.

Di belakang UI Anda adalah bisnis dan lapisan data Anda. Kode dalam lapisan ini memanggil sistem operasi dan api .NET Framework (misalnya, pemrosesan latar belakang, lokasi, kamera, sistem file, jaringan, dan akses data lainnya). Sebagian besar dari mereka tersedia untuk aplikasi Universal Windows Platform (UWP), sehingga Anda dapat berharap untuk dapat port banyak kode ini tanpa perubahan.

Metode asinkron

Salah satu prioritas Universal Windows Platform (UWP) adalah memungkinkan Anda membangun aplikasi yang benar-benar, dan konsisten, responsif. Animasi selalu halus, dan interaksi sentuh seperti panning dan menggesek seketika dan bebas dari lag, membuatnya terasa seperti UI terpaku pada jari Anda. Untuk mencapai hal ini, API UWP apa pun yang tidak dapat menjamin untuk menyelesaikan dalam 50ms telah dibuat asinkron dan namanya diakhiri dengan Async. Utas UI Anda akan segera kembali dari memanggil metode Async , dan pekerjaan akan berlangsung di utas lain. Mengkonsumsi metode Async dibuat sangat mudah, sintaksis, menggunakan operator C # await , objek janji JavaScript, dan kelanjutan C ++. Untuk info selengkapnya, lihat Pemrograman asinkron.

Pemrosesan latar belakang

Aplikasi Silverlight Windows Phone dapat menggunakan objek ScheduledTaskAgent terkelola untuk melakukan tugas saat aplikasi tidak berada di latar depan. Aplikasi UWP menggunakan kelas BackgroundTaskBuilder untuk membuat dan mendaftarkan tugas latar belakang dengan cara yang sama. Anda menentukan kelas yang mengimplementasikan pekerjaan tugas latar belakang Anda. Sistem menjalankan tugas latar belakang Anda secara berkala, memanggil metode Jalankan kelas Anda untuk menjalankan pekerjaan. Di aplikasi UWP, ingatlah untuk mengatur deklarasi Tugas Latar Belakang dalam manifes paket aplikasi. Untuk info selengkapnya, lihat Mendukung aplikasi Anda dengan tugas latar belakang.

Untuk mentransfer file data besar di latar belakang, aplikasi Windows Phone Silverlight menggunakan kelas BackgroundTransferService. Aplikasi UWP menggunakan API di Windows. Networking.BackgroundTransfer namespace untuk melakukan ini. Fitur menggunakan pola yang sama untuk memulai transfer, tetapi API baru telah meningkatkan kemampuan dan kinerja. Untuk info selengkapnya, lihat Mentransfer data di latar belakang.

Aplikasi Silverlight Windows Phone menggunakan kelas terkelola di Microsoft.Telepon. Namespace BackgroundAudio untuk memutar audio saat aplikasi tidak berada di latar depan. UWP menggunakan model aplikasi Windows Phone Store, lihat Audio Latar Belakang dan sampel audio Latar Belakang.

Layanan cloud, jaringan, dan database

Hosting data dan layanan aplikasi di cloud dimungkinkan menggunakan Azure. Lihat Memulai dengan Layanan Seluler. Untuk solusi yang memerlukan data online dan offline lihat: Menggunakan sinkronisasi data offline di Layanan Seluler.

UWP memiliki dukungan parsial untuk kelas System.Net.HttpWebRequest , tetapi kelas System.Net.WebClient tidak didukung. Alternatif yang direkomendasikan dan berwawasan ke depan adalah Windows. Kelas Web.Http.HttpClient (atau System.Net.Http.HttpClient jika Anda memerlukan kode Anda untuk portabel ke platform lain yang mendukung .NET). API ini menggunakan System.Net.Http.HttpRequestMessage untuk mewakili permintaan HTTP.

Aplikasi UWP saat ini tidak menyertakan dukungan bawaan untuk skenario intensif data seperti skenario line of business (LOB). Namun, Anda dapat menggunakan SQLite untuk layanan database transaksional lokal. Untuk info selengkapnya, lihat SQLite.

Lulus URI absolut, bukan URI relatif, ke Windows jenis Runtime. Lihat Meneruskan URI ke Runtime Windows.

Peluncur dan Pemilih

Dengan Peluncur dan Pemilih (ditemukan di Microsoft.Telepon. Tasks namespace), aplikasi Silverlight Windows Phone dapat berinteraksi dengan sistem operasi untuk melakukan operasi umum seperti menulis email, memilih foto, atau berbagi jenis data tertentu dengan aplikasi lain. Cari Microsoft.Telepon. Tugas dalam topik Windows Phone Silverlight ke Windows 10 namespace dan pemetaan kelas untuk menemukan jenis UWP yang setara. Ini berkisar dari mekanisme serupa, yang disebut peluncur dan pemetik, hingga menerapkan kontrak untuk berbagi data antar aplikasi.

Aplikasi Silverlight Windows Phone dapat dimasukkan ke dalam keadaan tidak aktif atau bahkan batu nisan saat menggunakan, misalnya, tugas Pemilih foto. Aplikasi UWP tetap aktif dan berjalan saat menggunakan kelas FileOpenPicker .

Monetisasi (mode uji coba dan pembelian dalam aplikasi)

Aplikasi Silverlight Windows Phone dapat menggunakan kelas UWP CurrentApp untuk sebagian besar mode uji coba dan fungsi pembelian dalam aplikasi, sehingga kode tidak perlu di-porting. Tapi, aplikasi Silverlight Windows Phone memanggil MarketplaceDetailTask.Show untuk menawarkan aplikasi untuk pembelian:

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

Port kode itu untuk memanggil metode UWP RequestAppPurchaseAsync :

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

Jika Anda memiliki kode yang mensimulasikan pembelian aplikasi dan fitur pembelian dalam aplikasi untuk tujuan pengujian, maka Anda dapat porting untuk menggunakan kelas CurrentAppSimulator sebagai gantinya.

Pemberitahuan untuk pembaruan petak atau roti panggang

Notifikasi adalah perpanjangan dari model notifikasi push untuk aplikasi Silverlight Windows Phone. Saat Anda menerima pemberitahuan dari Windows Push Notification Service (WNS), Anda dapat memunculkan info ke UI dengan pembaruan ubin atau bersulang. Untuk porting sisi UI fitur notifikasi Anda, lihat Ubin dan roti panggang.

Untuk detail selengkapnya tentang penggunaan notifikasi di aplikasi UWP, lihat Mengirim notifikasi roti panggang.

Untuk info dan tutorial tentang penggunaan ubin, roti panggang, lencana, spanduk, dan pemberitahuan di aplikasi runtime Windows menggunakan C++, C#, atau Visual Basic, lihat Bekerja dengan ubin, lencana, dan pemberitahuan roti panggang.

Storage (akses file)

Windows Phone kode Silverlight yang menyimpan pengaturan aplikasi sebagai pasangan nilai kunci dalam penyimpanan terisolasi mudah di-porting. Berikut adalah contoh sebelum dan sesudah, pertama versi 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>";

Dan setara 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>";

Meskipun subset dari Windows.Storage namespace tersedia bagi mereka, banyak aplikasi Silverlight Windows Phone melakukan file i / o dengan kelas IsolatedStorageFile karena telah didukung lebih lama. Dengan asumsi bahwa IsolatedStorageFile sedang digunakan, berikut adalah contoh sebelum dan sesudah menulis dan membaca file, pertama versi Silverlight Windows Phone:

    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();
        }
    }

Dan fungsi yang sama menggunakan 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);

Aplikasi Silverlight Windows Phone memiliki akses baca-saja ke kartu SD opsional. Aplikasi UWP memiliki akses baca-tulis ke kartu SD. Untuk info selengkapnya, lihat Mengakses kartu SD.

Untuk info tentang mengakses file foto, musik, dan video di aplikasi UWP, lihat File dan folder di pustaka Musik, Gambar, dan Video.

Untuk info selengkapnya, lihat File, folder, dan pustaka.

Topik berikutnya adalah Porting untuk faktor bentuk dan UX.